最近因为毕业,有很多的事情要忙,差点忘了还有个很久不写的博客还放在腾讯云优惠学生机上面(差点就寿未终就正寝)
毕业之后腾讯云的学生机也玩不到了,送的域名也是要到期了,干脆就直接域名和服务器都给换了= =
趁着这次重新配置博客的环境,就想顺手上个 https ~
准备
本机的hexo的安装配置这边就略略略了
下面看看服务器端的配置
Nginx
HTTP服务器,没用过Apache所以就选择它来作为HTTP服务器了。
因为是静态博客,只需要有个Nginx指定root路径很快就能配置好一个静态服务器了。
acme.sh
acme.sh是github上某大神写的一个shell脚本,它可以从Let’s Encrypt生成免费的HTTPS证书,并且可以设置自动更新证书,防止证书过期。
使用acme.sh
acme的安装可以直接看github,readme里面有中文版的说明。看这儿:acme.sh
安装
acme的安装很简单,只需要安装好curl即可,然后获取安装脚本并运行。安装脚本会自动将acme.sh安装到当前用户的home目录下,并且将alias等写入.bashrc
1
|
curl https://get.acme.sh | sh
|
生成证书
生成证书有两种验证方式。
一种是在网站根目录下防止一个文件,来验证域名的所有权,验证成功之后就可以生成证书。
另一种是通过DNS的方式,在域名解析中添加一条TXT解析记录来验证域名的所有权。
acme提供了自动添加TXT记录完成验证的功能,只需要事先准备好域名解析商所给到的api_id和key即可。
以cloudxns为例,首先登陆cloudxns官网,进入API管理,生成API。
API生成成功之后进行如下操作
1
2
3
4
|
export CX_Key="1234"
export CX_Secret="sADDsdasdgdsf"
acme.sh --issue --dns dns_cx -d example.com
|
这样CX_Key和CX_Secret都会保存在~/.acme.sh/account.conf
中,当需要的时候回自动调用。
更多的DNS API的使用方法可以看这儿:How to use DNS API
复制证书到Nginx
复制证书必须使用 --installcert
命令,并指定复制的目标位置(路径必须存在)。
指定reloadcmd,在证书更新之后,reloadcmd会被自动调用。
1
2
3
4
|
acme.sh --installcert -d urzz.me \
--key-file /etc/nginx/ssl/urzz.me.key \
--fullchain-file /etc/nginx/ssl/urzz.me.cer \
--reloadcmd "service nginx force-reload"
|
更新证书
目前的脚本,证书会在60天之后自动更新。
手动更新
1
|
acme.sh --renew -d example.com --force
|
更新
由于let’s encrypt和acme协议都在频繁的更新,因此acme.sh也需要经常更新。
1
2
|
# --auto-upgrade 设置自动更新
acme.sh --upgrade --auto-upgrade
|
Nginx 配置
在 /etc/nginx/nginx.conf
中有一个include,这表示Nginx启东时会解析include后面路径里面的文件
为了便于备份,我创建了/data目录,并将自定义的Nginx配置文件放在此路径下。
Nginx配置大概如下,参考 Nginx 配置 HTTPS 服务器
配置写完之后重启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
28
29
30
31
32
33
34
35
36
37
38
|
server {
listen 443 ssl;
server_name urzz.me;
keepalive_timeout 70;
ssl_certificate /etc/nginx/ssl/urzz.me.cer;
ssl_certificate_key /etc/nginx/ssl/urzz.me.key;
add_header Strict-Transport-Security "max-age=31536000;" always;
# 使用DH文件, 在目录 /etc/ssl/certs 运行以下代码生成 dhparam.pem 文件
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-Xss-Protection 1;
root /data/blog;
index index.html;
access_log /data/log/access_blog.log;
error_log /data/log/error_blog.log;
location / {
}
}
server {
listen 80;
server_name urzz.me;
rewrite ^(.*)$ https://urzz.me$1 permanent;
}
|
小结
现在再访问就可以看到强制使用https了哦也。
虽然只是简单的个人博客,但是用上了绿色的小锁瞬间感觉就不一样了!
这个夜晚的修仙成果还不错~