问题引入
叮咚~ 您有新的邮件,请注意查收

以为又是什么垃圾邮件, 点开一看, 嗯? 卧槽~ 我的域名备案已经通过啦.
要知道, 域名没备案完成前我一直用的ip地址访问, 相信经历过的朋友们都知道, 那样的话一个url是长长的一串, 非常冗余还不美观. 现在域名备案通过了,我就可以直接使用域名访问啦, 我立马登上服务器配置nginx .
但是, 我在使用域名进行访问的我的博客时, Chrome浏览器提示我的网站不安全! 不安全! 啊啊啊~~ Why ??


虽然点击高级,继续进入也可以进入网站. 但要是别人访问我博客时也来这一出, 那岂不是人都吓跑了? 不行!
为了解决这个问题, 我百度了一下, 知道了原来我们默认访问是使用的HTTP协议, 只需要将HTTP协议升级成HTTPS协议
就可以解决这个问题.
那么, 什么是HTTPS协议呢 ?
HTTPS协议在数据进行传输之前,会对数据进行加密,然后再发送到服务器。由于数据是经过加密的,这样即使我们的传输的信息被他人拦截获取后,也无法知晓其含义. 达到安全传输数据的目的.
明白了HTTPS协议的含义后, 怎么把HTTP协议升级成HTTPS协议呢? 接下来就跟着我一起来操作.
准备工作
- 一个已经备案的域名
- 一台云服务器
创建SSL 证书
这里我们使用的是FreeSSL提供的免费一年的的ssl证书, 一年后过期了又来重新创建就是了. 若资金充足也可以选择付费SSL证书
进入FreeSSL官网, 创建免费ssl证书

创建SSL证书
输入你的邮箱
选择证书类型为ECC
点击创建.
请先完成前2步再执行此步骤
生成SSL证书
- 点击创建后会弹出该选项.若没有安装KeyManager, 请先下载,下载完成后打开并后台运行, 返回浏览器点击再次尝试启动KeyManager即可.

- 点击后会跳转至KeyManager软件中,当看到
CSR生成成功
就可以了.

- 返回浏览器,并点击
继续
按钮, 会就看到以下界面

- 进入阿里云控制台, 点击云解析DNS, 点击
解析设置
按钮

- 然后点击
添加记录
按钮

- 将步骤3中获得的数据填入

⚠️警告:
记录类型
一定要选择TXT
- 步骤3中的TXT记录的值对应此步骤要填的主机记录的值
- 步骤3中的记录值对应此步骤要填的记录值
- 返回浏览器, 点击
配置完成,检测一下

- 若看到以下检查结果则说明没有问题,可以接着往下走. 若不是以下这个结果, 请仔细核对之前的步骤有无错误

下载SSL证书
- 打开KeyManager, 点击
证书请求
-> 对应域名的更多
->详情
->查看PEM


复制私钥,然后返回浏览器, 进入FreeSSL, 注册一个账号. 然后进入控制台的证书列表, 点击
上传私钥
⚠️警告: 私钥加密密码自己一定要记住, 待会儿有用的!!!
- 点击
确认上传
后, 可以看到是否存在私钥那一项已经变绿

点击侧边栏的
订单列表
-> 对应域名的状态
项, 然后点击保存到KeyManager
然后在KeyManager软件中的
所有证书
表格就有记录啦

点击
更多
->详情
->查看PEM
, 复制证书和证书链以及私钥(PKCS8), 下一步需要用到
- 进入阿里云控制台,然后进入
ssl证书(应用安全)
, 点击上传证书

- 将步骤6复制的证书和证书链以及私钥(PKCS8)数据分别填入证书文件及私钥. 证书名称随意填


- 点击确定后可以看到显示
已签发

部署SSL证书
进入KeyManager,进入所有证书 ->
更多
->导出证书
. 由于我使用的是nginx, 所以我选择是nginx, 大家根据自己的情况进行选择.
- 导出后是个zip压缩包, 解压后里面有两个文件,后缀分别.crt 和 .key

将这两个文件上传到服务器并记住其位置, 然后ssh连接服务器进行配置nginx . 编辑nginx的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name blog.imashimari.com;
root /usr/share/nginx/html;
ssl_protocols TLSv1.2;
ssl_certificate "/etc/pki/nginx/asd/server.crt"; # .pem文件的路径
ssl_certificate_key "/etc/pki/nginx/asd/private/server.key"; # .key文件的路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}配置后保存, 然后输入
nginx -s reload
命令进行重启nginx 使刚才的配置生效
检查SSL证书是否生效
我们可以使用myssl验证我们的https是否成功,

填写域名后点击立即检测
若评级结果为Aˉ及其以上
,那么恭喜你,你已经成功了.

⚠️警告: 若你的检测结果提示引用了不安全的HTTP资源
, 如下图所示
说明你的网站上还有http协议
的js, css, jpg或者其他资源,所以导致浏览器仍然提示该网站不安全.
博主之前就遇到了这个问题, 最后将该网站的全部http协议的资源全部换成了https协议的资源, 这样就解决啦

再次访问我们的网站, 可以看到浏览器已经没有提示我们的网站不安全了, 只有一把小锁静静地在那.


结语
博主在百度查找资料时走了很多弯路, 为了避免其他有相同问题的小伙伴们跟我一样走弯路(ps 其实是为了我以后续费ssl时有参考,实在不想再去重新再去百度一遍了) , 故将此次的升级HTTPS的过程详细记录了下来 . 有些地方可能博主表达的不是很清楚, 请大家多多担待, 遇到问题的话欢迎留言, 我看到的话会尽力帮助大家解决的