如何使得网站获得Https认证
在搭建好Hexo博客,并且购买了自己的域名之后,会发现个人网站会被浏览器识别成不安全的地址,同时不用https的话,会导致网站访问很慢,因此本文分享一下如何使得个人网站获得https证书,并将https部署到个人网站上。同时文章最后也顺便解决了一直以来无法解决的gitalk报错403的问题。
获得Https认证并部署到个人网站
获取并下载SSL证书
首先,需要购买一个域名,博主用的域名是阿里云的域名,因此注册非常方便,如何获取参考域名购买平台的文档即可,例如阿里的SSL证书获取方式,获取了证书之后,需要下载对应的证书文件。
注意下载的时候,需要选择合适的证书格式:
![](/2024/06/17/Https-certification/certification.png)
阿里云包含了多种证书格式,因为搭建博客用的是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_certificate
和ssl_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地址已经失效了,但是思路和排查过程非常值得学习。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以其他方式联系。