安装ssl证书
背景问题
原来搭建的网站通过http协议访问,而不是https(即通过ssl加密),每次跳转的时候都会警告网站不安全,虽然不影响正常访问,但给人一种不靠谱网站的感觉,所以还是把ssl证书安装一下吧,也能提高网站的安全性。
![image-20220103121321997](/posts/328fea3f/image-20220103121321997.png)
安装前后对比,可以查看证书详情。这里介绍阿里云免费DV SSL类型证书申请和部署。
SSL证书介绍、服务流程参考:SSL证书服务
1. 证书服务
1.1 证书购买
直接在阿里云搜索 ssl证书,点击立即购买,进入到云盾证书服务界面。
注意:个人网站推荐购买免费型DV SSL,单域名
![image-20220103233339374](/posts/328fea3f/image-20220103233339374.png)
域名验证时,可以选择DNS,也可以选择文件。两种不同的方案,目的是相同的,都是为了验证域名,具体的操作步骤网页上都有提示,大多数推荐DNS方式,我采用的文件方式,感觉也很快。
具体流程:
1)下载domain_check压缩包,解压后得到fileauth.txt
文件
2)将该文件拷贝至网站根目录下,建立对应文件夹,将fileauth.txt
文件拷贝至对应位置
1 | cd /home/hexo_blog |
3)重启nginx
4)在网页上点击验证,大概过几分钟后就会通过审批,然后就可以下载签发的证书
1.2 证书下载
- 点击控制台—>产品与服务—>SSL证书
![image-20220103233808975](/posts/328fea3f/image-20220103233808975.png)
- 点击免费证书:有申请、部署、下载等选项
![image-20220103233928864](/posts/328fea3f/image-20220103233928864.png)
下载nginx对应的证书包,里面包含一个后缀名为 pem 和一个后缀名为 key 的两个文件。
说明:
- 证书文件xxx.pem,包含两段内容,请不要删除任何一段内容。
- 如果是证书系统创建的CSR,还包含:证书私钥文件xxx.key。
![image-20220104001935798](/posts/328fea3f/image-20220104001935798.png)
2. hexo博客添加https
网页安全问题可以具体参考知乎:https和http安全问题
问题: 因为移动端和很多浏览器自动优先寻址https(对应端口443),而之前http(默认端口为80),导致博客页面无法打开,因为需要在nginx上开放443端口,让https链接能够正常访问。
详细流程可以参考阿里help文档,在Nginx服务器上安装证书
2.1 创建目录和上传证书文件至服务器
1 | mkdir -p /usr/local/nginx/conf/cert |
2.2 修改配置文件
1 | vim nginx.conf |
注意,对于https开放的443端口,1)要在ECS服务器的安全组规则中放行所有的对443端口的访问;2)开放Linux 443端口
1 | /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT |
2.3 重启Nginx服务
再次访问网页,观察是否有小锁标志。
1 | service nginx restart |
问题处理
1. Nginx配置SSL出错
报错:配置ssl后,nginx启动出错,nginx:[emerg]unknown directive ssl
根因:因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去。
解决方案:重新配置ssl module,重新编译生成nginx,不需要重新安装,替换原来的可执行程序nginx就好
1 | # 步骤一:重新配置 |
出现configure arguments: --with-http_ssl_module
,则SSL模块添加到Nginx的编译好了,重启nginx OK.