如何使得网站获得Https认证

  1. 获得Https认证并部署到个人网站
    1. 获取并下载SSL证书
    2. 部署到个人网站
  2. 解决gitalk报错403

  在搭建好Hexo博客,并且购买了自己的域名之后,会发现个人网站会被浏览器识别成不安全的地址,同时不用https的话,会导致网站访问很慢,因此本文分享一下如何使得个人网站获得https证书,并将https部署到个人网站上。同时文章最后也顺便解决了一直以来无法解决的gitalk报错403的问题。

获得Https认证并部署到个人网站

获取并下载SSL证书

  首先,需要购买一个域名,博主用的域名是阿里云的域名,因此注册非常方便,如何获取参考域名购买平台的文档即可,例如阿里的SSL证书获取方式,获取了证书之后,需要下载对应的证书文件。

  注意下载的时候,需要选择合适的证书格式:


阿里云证书格式

  阿里云包含了多种证书格式,因为搭建博客用的是hexo,这个用的是Nginx来部署网络服务的,因此选择Nginx格式即可。下载并且解压之后会有两个文件:

- xxx.key,这个是私钥,私钥是不能泄露的,所以一定要妥善保管。
- xxx.pem,这个是证书文件,里面包含了网站的公钥,公钥是可以公开的,可以分享给其他人。

部署到个人网站

  部署到个人网站,需要将下载的证书文件放到网站的根目录下,然后修改Nginx的配置文件,将http协议改为https协议,并配置证书文件路径。博主这里是将SSL证书文件上传到了/etc/nginx/cert文件夹下。

  之后需要修改Nginx的配置,将证书文件配置,默认的Nginx配置文件为/etc/nginx/nginx.conf,如果这其中找不到你的hexo链接配置,那需要找一下其他的配置文件,因为有可能不同的网络服务配置到了不同的文件夹中,这里常用的两个位置是/etc/nginx/conf.d//etc/nginx/vhost/,具体配置文件在哪里,可以查看/etc/nginx/nginx.conf看到:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/vhost/*;

  找到这两个include语句,后面的文件就是当前Nginx所涉及到的配置文件,博主这里是在/etc/nginx/vhost/blog.conf中配置的,将原来hexo的配置修改为如下配置即可,当然也可以只增加其中和SSL证书有关系的部分:

server {
    listen        80;
    listen   [::]:80;
    server_name  www.sadangel.cn;
    server_name sadangel.cn;

    rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
    listen  443 ssl;
    server_name  www.sadangel.cn;
    server_name sadangel.cn;

    ssl_certificate   /etc/nginx/cert/sadangel.cn.pem;
    ssl_certificate_key   /etc/nginx/cert/sadangel.cn.key;

    ssl_session_cache   shared:SSL:1m;
    ssl_session_timeout   5m;

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        root /root/blog/public;
        index index.html;
    }
}

  其中,ssl_certificatessl_certificate_key是证书文件路径,root是网站的根目录,index是网站的默认首页,rewrite是将http请求重定向到https。

  修改完配置文件之后,需要重启Nginx服务:

# 可以通过这个命令来测试Nginx命令是否正确:
nginx -t

# 重启Nginx服务:
service nginx restart

# 重新加载配置文件:
service nginx reload

  完成以上命令之后,网站应该已经配置好了Https的证书,可以访问浏览器查看,是否配置成功。

解决gitalk报错403

  Gitalk是非常好用的博客评论插件,因此非常方便,配置可以参考3-hexo评论设置完成,但是配置之后,会产生报错403的问题,原因是原来的Gitalk使用的访问链接时临时的,因此使用次数有限,目前Gitalk已经更新了访问链接,只是博主这里用的比较老,所以还没有更新,因此记录一下。

  找到所使用的主题创建Gitalk对象的地方,一般是主题的layout/_partial/comments.ejs文件中,找到配置Gitalk的代码:

    var gitalk = new Gitalk({
        clientID: '<%=theme.gitalk.ClientID %>',
        clientSecret: '<%=theme.gitalk.ClientSecret %>',
        repo: '<%=theme.gitalk.repo %>',
        owner: '<%=theme.gitalk.githubID %>',
        admin: ['<%=theme.gitalk.adminUser %>'],
        id: decodeURI(location.pathname),
        distractionFreeMode: '<%=theme.gitalk.distractionFreeMode %>',
        language: '<%=theme.gitalk.language %>',
        proxy: 'https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token',   ###增加这一行
        perPage: parseInt('<%=theme.gitalk.perPage %>',10)
    })

  将proxy这一行增加,并将其值设置为https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token,然后重新部署博客(hexo g),应该就可以解决报错403的问题了。

  涉及到如何锁定到Gitalk的代码和整个问题的寻找解决,可以参考Gitalk 评论登录 403 问题解决,非常详细,值得仔细阅读,虽然博客里的proxy地址已经失效了,但是思路和排查过程非常值得学习。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以其他方式联系。

💰

×

Help us with donation