为halo博客添加ssl证书
前言
本文最后编辑于2022.2.13
注:本教程并不是每一个步骤都十分详细,但是关键步骤都给到了,仅作一个参考(本教程纯属折腾,其实根本用不着反向代理)
本教程的实验环境:阿里云一台,腾讯云一台,阿里云有halo博客,腾讯云为nginx服务器,先前已经配置好为halo博客的nginx反向代理服务器,现在我们要为nginx添加ssl证书。
关于先前配置的反向代理:
起初这个腾讯云的nginx是yum拉取的,然后直接在/etc/nginx/conf.d/
中添加halo.conf,内容如下:
upstream halo_server{
xx.xx.xx.xx:8090;
}
server{
listen 80;
server_name halo;
location \ {
prxoy_pass http://halo_server
}
}
简易版的反向代理便做好了。
添加ssl证书
域名是腾讯云的,于是进去申请对应域名的免费的ssl证书,点击证书详情可以下载证书:
由于网上关于nginx添加ssl证书的教程都是源码安装的,于是我就把先前的nginx直接yum remove了(保留了其/etc/nginx目录,里面的halo.conf我们可以留着复用),先跟着网上教程做来看看
下载源码,编译安装:
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar zxf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
关于源码安装nginx的更多细节:https://www.cnblogs.com/sillage/p/14753649.html
在其主配置文件/usr/local/nginx/conf/nginx.conf
,http{ }中我加入了一句include /etc/nginx/conf.d/halo.conf;
把之前的halo的配置文件包括进去(你也可以把halo.conf放在其他位置,绝对路径正确即可)
然后对halo.conf进行修改添加ssl证书:
upstream halo_server{
server XX.XX.XX.XX:8090;
}
server {
listen 80;
listen 443 ssl;
server_name halo;
ssl on;
ssl_certificate /etc/nginx/cert/Nginx/1_XXXX.crt;#从腾讯云下载的证书相关文件,存放路径自定义
ssl_certificate_key /etc/nginx/cert/Nginx/2_XXXX.key;#从腾讯云下载的证书相关文件
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://halo_server;
#proxy_buffer_size 64k;
#proxy_buffers 32 32k;
#proxy_busy_buffers_size 128k;
}
}
按照上述这么操作其实我觉得,就在yum拉取的nginx环境中,对halo.conf添加如上内容,也应该是没有问题,这个请读者自行探索
由于我的域名启用了cdn,去cdn域名管理添加https,强制跳转建议开启并设置为http强制跳转为https,基础设置里,有个回源协议,可以选择协议跟随:
然后去halo博客后台为将网站链接改为https形式,如果访问提示网站并不完全安全,那么是因为网站中还包含有http形式的链接,我检查了一圈,发现是头像的原因,于是将头像换为https形式后就ok了(替换后别忘了保存):
添加ssl证书后,halo博客为文章添加访问密码的功能也就可以使用了,亲测可用。
后续
本节最后更新于2022.2.23
后续博客迁移,放到了docker上面,然后通过宿主机nginx反向代理出来。
发现好像证书的配置也不需要那么麻烦,第一步申请,第二步去腾讯云cdn控制台https处配置即可: