hexo博客部署SSL证书

根据网上的教程,我基于hexo搭建了自己的个人博客,托管在github上,并且在阿里云上购买了个人域名,申请了免费的SSL证书并且绑定了我的个人域名,现在的情况是我通过自己的域名访问个人网站没有问题,但是显示还是用的http协议,不安全,网上很多教程都是说需要勾选github里的enforce https选项,但是我的github网站上一直勾选不了,显示“Unavailable for your site because your domain is not properly configured to support HTTPS”,不知道还有没有其他方式可以部署SSL证书。

检查你的域名是否已经正确解析到GitHub Pages的服务器,还有一种可能就是是因为DNS缓存还没有更新,得等一等


在 GitHub Pages 上部署 Hexo | Hexo 本文将使用 GitHub Actions 部署至 GitHub Pages,此方法适用于公开或私人储存库。若你不希望将源文件夹上传到 GitHub,请参阅 一键部署。 建立名为 <你的 GitHub 用户名>.github.io 的储存库,若之前已将 Hexo 上传至其他储存库,将该储存库重命名即可。 将 Hexo 文件夹中的文件 push 到储存库的默认分支,默认分支通常名为 ma https://hexo.io/zh-cn/docs/github-pages.html

该回答引用chatgpt
GitHub Pages 支持通过 HTTPS 访问个人网站,配置 SSL 证书可以提高网站的安全性,防止用户信息泄露。

以下是在 GitHub Pages 上配置 SSL 证书的步骤:

  1. 获取 SSL 证书

可以通过购买或申请免费的 SSL 证书来获取。推荐使用 Let's Encrypt 免费 SSL 证书服务。

在使用 Let's Encrypt 之前,需要确保你的域名已经解析到了 GitHub Pages 的服务器上,可以通过 dig 命令验证:

dig yourdomain.com +nostats +nocomments +nocmd

如果返回的结果中包含以下信息,则说明域名已经成功解析到了 GitHub Pages 的服务器上:

yourdomain.com.    X    IN    A    185.199.108.153
yourdomain.com.    X    IN    A    185.199.109.153
yourdomain.com.    X    IN    A    185.199.110.153
yourdomain.com.    X    IN    A    185.199.111.153
  1. 生成证书

可以使用 Certbot 工具生成 Let's Encrypt SSL 证书。Certbot 是一个自动化 SSL 证书管理工具,可以自动化完成 SSL 证书的申请、更新和安装等操作。

以下是使用 Certbot 生成 SSL 证书的步骤:

  • 安装 Certbot 工具:

    sudo apt-get update
    sudo apt-get install certbot
    
  • 使用 Certbot 生成 SSL 证书:

    sudo certbot certonly --manual
    

    然后按照提示输入你的域名,Certbot 会为你提供一个 DNS 记录,将该记录添加到你的域名管理中。

  • 根据 Certbot 的提示,将 DNS 记录添加到你的域名管理中。添加完毕后,Certbot 会自动验证你的域名,并生成 SSL 证书。

  1. 配置证书

生成的 SSL 证书文件位于 /etc/letsencrypt/live/yourdomain.com/ 目录下,包括 cert.pemchain.pemprivkey.pem 三个文件。

可以通过编辑 GitHub Pages 的 _config.yml 文件来配置 SSL 证书:

ssl:
  cert: /etc/letsencrypt/live/yourdomain.com/cert.pem
  key: /etc/letsencrypt/live/yourdomain.com/privkey.pem
  chain: /etc/letsencrypt/live/yourdomain.com/chain.pem

yourdomain.com 替换为你的域名,然后将 _config.yml 文件提交到 GitHub 上,GitHub Pages 会自动加载 SSL 证书。

  1. 验证

SSL 证书配置完成后,可以通过访问 https://yourdomain.com 来验证是否成功。如果浏览器中出现绿色的锁图标,则证明 SSL 配置成功。

需要注意的是,SSL 证书的有效期只有三个月,需要定期更新。可以使用 Certbot 工具自动更新证书。

参考gpt:
结合自己分析给你如下建议:
hexo是一种基于Node.js的静态博客生成器,它可以快速地创建和部署个人博客。
github是一种基于Git的代码托管平台,它提供了免费的github pages服务,可以用于托管个人网站或博客。
https是一种安全的超文本传输协议,它可以保护网站和用户之间的通信不被窃听或篡改。
要开启https,您需要在您的域名注册商处配置一个SSL证书,并且在github上勾选enforce https选项,这样就可以将您的网站从http重定向到https。
您遇到的问题可能是由于您的域名注册商处的SSL证书配置不正确或者github上的DNS设置不正确导致的。要解决这个问题,可能需要以下几个步骤:
首先,需要检查您的域名注册商处的SSL证书是否有效且未过期,如果是,您需要重新申请或更新您的SSL证书。
其次,需要检查您的域名注册商处的DNS设置是否正确,如果不是,您需要将您的域名解析到github pages提供的IP地址或CNAME记录。
最后,需要检查您的github上的DNS设置是否正确,如果不是,您需要在github pages设置中输入正确的自定义域名,并等待一段时间让DNS生效。

提示你的域名不支持https协议,应该是证书部署错误

你遇到的问题可能是由于你的域名提供商没有正确地配置HTTPS。虽然你已经申请了免费的SSL证书并绑定了域名,但是这只是在你的域名解析和SSL证书方面配置了HTTPS,而你的域名提供商可能没有正确地配置HTTPS。

在这种情况下,你可以尝试以下几种方法:

联系你的域名提供商,询问他们是否已经正确地配置了HTTPS。如果他们没有正确地配置HTTPS,他们应该能够帮助你解决问题。
尝试使用第三方DNS提供商,如Cloudflare。Cloudflare提供免费的DNS托管服务,并且可以轻松地配置HTTPS。你可以将你的域名解析指向Cloudflare的DNS服务器,然后使用Cloudflare的HTTPS选项。
如果你想继续使用GitHub Pages,你可以尝试使用自定义域名进行HTTPS配置。在GitHub上,你可以创建一个CNAME文件,将你的域名写入其中,然后在你的域名提供商处进行配置。请注意,这可能需要一些额外的步骤,并且可能不适用于所有的域名提供商。

总之,要解决这个问题,你需要确保你的域名提供商已经正确地配置了HTTPS。如果他们没有正确地配置HTTPS,你可以尝试使用其他方法来配置HTTPS,如使用第三方DNS提供商或使用自定义域名进行HTTPS配置。

【以下回答由 GPT 生成】

首先需要明确的是,GitHub Pages 并不支持自定义 SSL 证书,所以我们不能直接通过在 GitHub 上部署 SSL 证书的方式来解决该问题。然而,我们可以通过使用 Cloudflare 来为我们的域名提供 SSL 加密,从而实现使用 HTTPS 访问我们的博客。

下面是具体的步骤:

  1. 登录 Cloudflare:在浏览器中打开 Cloudflare 的网站(https://www.cloudflare.com),点击 "Sign Up" 按钮注册账号并登录。

  2. 添加网站:登录后,在 Cloudflare 控制台中,点击 "Add a Site" 按钮将你的域名添加到 Cloudflare。

  3. Cloudflare 扫描 DNS:Cloudflare 会自动扫描你的域名的 DNS 设置。

  4. 设置 DNS:Cloudflare 会展示通过扫描获得的 DNS 记录,确保所有记录都正确并且与你的实际 DNS 设置一致,如果没有问题,点击 "Continue" 按钮。

  5. Cloudflare 跟踪 DNS:Cloudflare 会提供两个新的域名服务器(nameservers),你需要将这两个域名服务器更新到你的域名注册商那里。进入你的域名注册商的控制台,找到域名服务器设置的地方,将 Cloudflare 提供的两个域名服务器替换为当前的域名服务器。

  6. 等待 DNS 生效:域名服务器更新需要一些时间来生效,等待一段时间。

  7. 配置 SSL:一旦 DNS 生效,返回 Cloudflare 控制台,点击上方导航栏的 "Crypto" 按钮。在 "Crypto" 页面中,将 SSL 选项设置为 "Full".

  8. 修改 Hexo 配置:现在我们需要修改 Hexo 的配置文件 _config.yml,确保你的博客的 urlroot 字段都使用 https:// 协议。示例如下:

url: https://yourdomain.com
root: /
  1. 刷新 GitHub Pages:现在,我们需要迫使 GitHub Pages 重新构建我们的网站以便使用 HTTPS。可以通过进行无效的更改并提交到 GitHub 来实现这一点,或者你也可以在触发 GitHub 自动构建的任何其他操作/事件上完成。

  2. 完成:稍等片刻后,你的博客现在应该可以通过 HTTPS 访问了。

需要注意的是,Cloudflare 的免费版本只提供基本的 SSL 加密,如果你需要更高级的功能,可以考虑升级到付费版本。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

联系你的域名提供商,询问他们是否已经正确地配置了HTTPS。如果他们没有正确地配置HTTPS,他们应该能够帮助你解决问题。
尝试使用第三方DNS提供商,如Cloudflare。Cloudflare提供免费的DNS托管服务,并且可以轻松地配置HTTPS。你可以将你的域名解析指向Cloudflare的DNS服务器,然后使用Cloudflare的HTTPS选项。
如果你想继续使用GitHub Pages,你可以尝试使用自定义域名进行HTTPS配置。在GitHub上,你可以创建一个CNAME文件,将你的域名写入其中,然后在你的域名提供商处进行配置。请注意,这可能需要一些额外的步骤,并且可能不适用于所有的域名提供商。

证书有没有问题

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

通过GitHub Pages托管的静态网站,使用自定义域名并启用HTTPS可以实现通过SSL证书加密传输。如果GitHub网站上的"Enforce HTTPS"选项不可用,可能是因为您的域名配置不正确。以下是一些步骤,以确保正确配置域名以支持HTTPS:

1、 在阿里云上购买的个人域名:

  • 确保您的域名已正确解析到GitHub Pages的IP地址。您可以在阿里云的域名管理界面中设置域名解析,将域名的A记录或CNAME记录指向GitHub Pages提供的IP地址或域名。
  • 检查域名解析是否生效,可以使用命令行工具如pingnslookup,验证域名是否正确解析到GitHub Pages的IP地址。

2、 在GitHub上配置域名:

  • 在GitHub仓库的设置中,确保在"Custom domain"字段中输入您的个人域名。
  • 如果您的域名以www开头,可以选择在"Custom domain"字段中输入www域名,或者在域名管理界面设置一个CNAME记录将www域名指向GitHub Pages提供的域名。
  • 确保GitHub仓库的"Settings"选项中的"GitHub Pages"部分显示正确的自定义域名。

3、 申请并绑定SSL证书:

  • 您提到已经在阿里云上申请了免费的SSL证书并绑定了个人域名。确保SSL证书已成功申请,并且在阿里云上正确配置了证书和域名的绑定。

4、 等待DNS解析和证书生效:

  • DNS解析和SSL证书的生效可能需要一些时间。请耐心等待一段时间,以确保域名解析和SSL证书生效。

完成上述步骤,并确保域名解析和SSL证书配置正确,您的个人博客应该能够通过HTTPS访问。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

援引讯飞星火:
你可以尝试以下方法来部署SSL证书:

  1. 在GitHub Pages设置中启用HTTPS。

    登录到你的GitHub帐户,然后转到你的个人博客仓库。点击“Settings”选项卡,然后在左侧菜单中选择“GitHub Pages”。在“GitHub Pages”设置页面中,找到“Source”部分,将“Protocol”设置为“https”,然后保存更改。

  2. 使用第三方工具强制启用HTTPS。

    有一些第三方工具可以帮助你强制启用HTTPS,例如SSL For Free、Let's Encrypt等。这些工具可以帮助你生成免费的SSL证书,并将其安装到你的GitHub Pages站点上。

  3. 将SSL证书添加到GitHub仓库。

    如果你已经拥有SSL证书,可以将其添加到你的GitHub仓库中。首先,将SSL证书文件(通常为.crt.pem格式)上传到你的个人电脑或其他可访问的服务器上。然后,在GitHub仓库中创建一个新的分支,将SSL证书文件添加到该分支中。最后,将分支推送到GitHub仓库,并在GitHub Pages设置中选择该分支作为源。

  4. 使用其他托管服务。

    如果以上方法都无法解决问题,你可以考虑使用其他支持HTTPS的托管服务,如Netlify、Vercel等。这些服务通常提供更简单的部署流程和更好的安全性。

希望这些建议能帮助你成功部署SSL证书。

在你更改了域名配置后,可能需要一些时间让DNS记录生效。这个过程通常需要几小时到最多48小时。在等待期间,有时候一些选项可能暂时不可用。

Hexo博客配置SSL证书得步骤

1.准备SSL证书。
去提供云服务的官网下载自己购买的、已经备案的域名的SSL证书,比如阿里云,腾讯云,华为云等,这里介绍的是阿里云与腾讯云。
需要注意的是,这里需要下载的是服务器类型为Nginx的,后面配置时需要使用到。

阿里云下载解压后可以得到一个.pem文件和.key文件,而腾讯云有所不同,是一个.crt文件和.pem文件。

注意 以下配置方法以阿里云的为例,腾讯云方法一样,.crt文件的作用和.pem是相同的,也就是说阿里云中使用.pem在腾讯云中则使用.crt文件。

2.上传到云服务器
为了管理方便,在云服务器上自己hexo项目文件夹(也就是将来要发布成网站的文件夹)中新建ssl文件夹,把这两个文件上传到这个ssl文件夹中。比如说当前这个hexo项目文件夹为"withyan",则ssl文件夹即在withyan文件夹中,其中withyan文件夹的路径为:/root/withyan

3.配置server.js
整个自己的hexo项目有个入口地址,即server.js文件,目录为withyan/node_modules/hexo-server/lib。
注意需要安装express,即在hexo项目目录下,输入命令如下:

## 或者npm
cnpm install express --save

接下来需要对这个server.js文件进行修改。

# 跳转到相应目录,备份一下需要修改的文件
$ cd withyan/node_modules/hexo-server/lib
$ cp server.js server.js.back

编辑这个server.js文件,修改后内容如下,注意需要根据实际情况修改SSL证书文件名:

var fs = require('fs');
var connect = require('connect');
var http = require('https');
var chalk = require('chalk');
var Promise = require('bluebird');
var open = require('opn');
var net = require('net');
var url = require('url');
var express = require('express');

var httpApp = express();

httpApp.all("*", (req, res, next) => {
  let host = req.headers.host;
  host = host.replace(/\:\d+$/, ''); // Remove port number
  res.redirect(307, `https://${host}${req.path}`);
});

httpApp.listen(80, function () {
 console.log('http on 80 Welcome to Smileyan.cn');
});

const options = {
    key : fs.readFileSync("/withyan.cn.key"),
    cert: fs.readFileSync("/withyan.cn.pem")
}

module.exports = function(args) {
  var app = connect();
  var config = this.config;
  var ip = args.i || args.ip || config.server.ip || undefined;
  var port = parseInt(args.p || args.port || config.server.port || process.env.port, 10) || 4000;
  var root = config.root;
  var self = this;

  return checkPort(ip, port).then(function() {
    return self.extend.filter.exec('server_middleware', app, {context: self});
  }).then(function() {
    if (args.s || args.static) {
      return self.load();
    }

    return self.watch();
  }).then(function() {
    return startServer(http.createServer(options,app), 443, ip);
  }).then(function(server) {
    var addr = server.address();
    var addrString = formatAddress(ip || addr.address, addr.port, root);

    self.log.info('Hexo is running at %s . Press Ctrl+C to stop.', chalk.underline(addrString));
    self.emit('server');

    if (args.o || args.open) {
      open(addrString);
    }

    return server;
  }).catch(function(err) {
    switch (err.code){
      case 'EADDRINUSE':
        self.log.fatal('Port %d has been used. Try other port instead.', port);
        break;

      case 'EACCES':
        self.log.fatal('Permission denied. You can\'t use port ' + port + '.');
        break;
    }

    self.unwatch();
    throw err;
  });
};

function startServer(server, port, ip) {
  return new Promise(function(resolve, reject) {
    server.listen(port, ip, function() {
      resolve(server);
    });

    server.on('error', reject);
  });
}

function checkPort(ip, port) {
  return new Promise(function(resolve, reject) {
    if (port > 65535 || port < 1) {
      return reject(new Error('Port number ' + port + ' is invalid. Try a number between 1 and 65535.'));
    }

    var server = net.createServer();

    server.once('error', reject);

    server.once('listening', function() {
      server.close();
      resolve();
    });

    server.listen(port, ip);
  });
}

function formatAddress(ip, port, root) {
  var hostname = ip;
  if (ip === '0.0.0.0' || ip === '::') {
    hostname = 'localhost';
  }

  return url.format({protocol: 'http', hostname: hostname, port: port, path: root});
}


在给他们上设置好sl

提供一个参考的实例,该实例讲解非常详细,可依照执行,GitHub+Hexo 搭建个人网站详细教程,链接:https://zhuanlan.zhihu.com/p/26625249?appinstall=0

引用 皆我百晓生 小程序回复内容作答:

如果你的GitHub博客无法勾选"enforce https"选项,可能是因为你的域名配置不正确或者SSL证书还没有完全生效。下面是一些可能的解决方案:

  1. 确认域名配置正确:在阿里云上购买了个人域名后,需要将域名解析到你的GitHub Pages上。确保你的域名解析配置正确,将域名指向你的GitHub Pages的IP地址。

  2. 等待SSL证书生效:免费的SSL证书可能需要一段时间才能生效。等待一段时间,确保SSL证书已经完全生效。

  3. 强制使用HTTPS协议:如果无法通过GitHub设置来启用HTTPS,你可以通过其他方式实现。你可以使用Cloudflare等CDN服务,将你的域名指向CDN服务提供的IP地址,并在CDN服务中配置SSL证书。

如果以上方法仍然无法解决问题,你可以尝试咨询GitHub的支持团队或者SSL证书提供商的技术支持,寻求进一步帮助。

用反向代理服务器(如Nginx、Apache等)来处理HTTPS请求,并将请求转发到GitHub Pages上的HTTP服务,在反向代理服务器上配置SSL证书,以实现HTTPS访问

结合GPT给出回答如下请题主参考
恭喜你已经成功地为你自己的个人博客添加了SSL证书,这将保证你的个人网站的安全性和可靠性。以下是你需要注意的几个方面:

  1. 检查证书有效期:在你使用SSL证书前,你需要确保证书没有过期,否则SSL连接将无法建立。你可以登录到阿里云证书控制台,检查证书有效期。

  2. 配置HTTPS重定向:为了确保网站访问的安全,你需要将HTTP请求重定向到HTTPS。你可以在hexo的配置文件_config.yml中添加以下代码,启用自动HTTPS重定向:

permalink: :year/:month/:day/:title/
auto_detect_pairs:
  - '*.example.com'
ssl:
  enable: true
  force: true
  pem: /etc/ssl/example.crt
  key: /etc/ssl/example.key
  ca: /etc/ssl/example.ca
  pfx: /etc/ssl/example.pfx

请根据实际情况修改证书路径和域名。

  1. 更新谷歌分析代码:如果你使用了谷歌分析来跟踪网站的访问量和用户行为,你需要更新谷歌分析代码,将协议从http改为https,确保数据传输的安全性。

  2. 检查资源链接:你需要确保所有的资源链接都使用https协议,包括图片、样式表和JavaScript等。你可以使用开发者工具或在线工具检查资源链接是否都使用了https。

最后,我建议你及时更新SSL证书,了解证书的有效期限和续约方式,保障个人网站的安全性。希望我的回答能够帮助你!

在阿里云上检查你的域名配置是否正确,包括 DNS 记录和解析设置。如果你的配置正确,你可以尝试清除浏览器缓存和重新加载页面,看看问题是否仍然存在。
确保你的 GitHub Pages 设置正确。
尝试使用自定义 DNS 解析。。
使用 Let's Encrypt 免费 SSL 证书。或者第三方 CDN 服务。

参考gpt
如果您在GitHub Pages上托管的Hexo博客无法勾选"Enforce HTTPS"选项,并且您已经在阿里云上购买了个人域名并申请了免费的SSL证书,您可以尝试以下方法来部署SSL证书:

  1. 使用Cloudflare CDN:Cloudflare是一个免费的CDN(内容分发网络)服务,它可以帮助您为您的网站启用SSL证书。您可以将您的域名指向Cloudflare提供的DNS服务器,并在Cloudflare控制台中配置SSL证书。然后,您可以通过Cloudflare提供的HTTPS链接访问您的网站。

  2. 使用反向代理:您可以使用反向代理服务器来实现SSL证书的部署。将您的域名指向反向代理服务器,并在服务器上配置SSL证书。然后,将请求转发到GitHub Pages上的Hexo博客。这样,您可以通过反向代理服务器提供的HTTPS链接访问您的网站。

  3. 使用其他托管平台:如果您无法在GitHub Pages上启用SSL证书,您可以考虑将您的Hexo博客迁移到其他支持SSL证书的托管平台。有一些托管平台,如Netlify和Vercel,提供了免费的SSL证书,并且可以轻松地将Hexo博客部署到这些平台上。

这个错误信息通常意味着您的域名配置不支持HTTPS。HTTPS是网络安全协议,它通过加密通信来保护网站的访问和交互数据。如果您的网站没有正确配置HTTPS,您将无法访问一些内容。

如果您想启用HTTPS,您需要在您的域名注册商或托管服务提供商处购买SSL证书,并将其正确地安装到您的网站服务器上。一旦SSL证书正确配置,您的网站就可以通过HTTPS访问,并且将获得更好的安全性和信誉度。

如果您不知道如何配置您的域名以支持HTTPS,您可以联系您的托管服务提供商或域名注册商,或者查看他们的文档和支持文档,以获取详细说明。

你可以检查域名的DNS解析是否正确设置为GitHub提供的IP地址