给博客装上HTTPS

最近发现通过chrome打开我的博客后里面的图片全都是叉叉,原来现在chrome不能再访问安全页面里的不安全元素了,也就是说如果一个网站是https的、里面的图片都是http的链接,用chrome打开后里面图片就都是叉叉了。

  • 当初为了方便我是用的github page搭建的博客,博客是https的(https://tallate.github.io);
  • 图片全放到了自己租的云服务器上了,并用Nginx简单地提供查询功能,比如:/imgs/BigData/BigData-%E6%89%BE%E4%B8%AD%E4%BD%8D%E6%95%B0.png

see: Chrome 现在强制把 http 资源文件转成 https 了吗

为了继续用github page,现在得给我的图片加上https访问协议了。

配置过程

办个域名

大部分ssl证书都是注册到域名下的,为了方便先买个域名再办个域名解析。

  1. 买一个域名
    万网上的。
    我买的top域名,一年才9块。
  2. 域名解析
    解析到自己服务器的IP即可

买ssl证书

腾讯云上有个免费的证书可以领,不过是1年的:https://buy.cloud.tencent.com/ssl?fromSource=ssl
按官网流程申请证书
下载下来可以得到一个压缩包,解压了就是证书和密钥文件。

安装证书

将上面压缩包中的Nginx子目录拷贝到服务器上,比如/etc/https

修改nginx配置,因为我是使用Docker来运行的,所以需要把本地的配置文件映射到容器中。
本地配置文件/etc/nginx/default.conf:

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
server {
# 改成https后80端口就不用了
# listen 80;
# server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

listen 443 ssl; # 1.1版本后这样写
server_name tallate.top; #填写绑定证书的域名
ssl_certificate /etc/https/1_tallate.top_bundle.crt; # 指定证书的位置,绝对路径
ssl_certificate_key /etc/https/2_tallate.top.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;

}

修改nginx容器的启动参数:

1
2
3
4
5
6
docker run -d -p 443:443 \
-v /home/hgc/nginx/sources:/usr/share/nginx/html \
-v /home/hgc/nginx/logs:/var/log/nginx \
-v /etc/nginx:/etc/nginx/conf.d \
-v /etc/https:/etc/https \
nginx
  • 注意云服务器的端口号也要开放了。
  • 注意目录的权限,我图方便直接全分了个777。

使用https访问

原来是http://ip,现在改成

参考

https://www.cnblogs.com/chnmig/p/10343890.html