Centos7.4 Let's Encrypt 免费证书升级
作者: dkvirus 发表于: 2018-06-06 21:36:00 最近更新: 2018-09-05 09:08:07

一、概述

要升级 https,需要证书。

Let’s Encrypt 公司提供免费证书,有效期 90 天。

直接去 Let’s Encrypt 公司申请证书是件麻烦事,庆幸的是官方提供了一个软件 certbot,安装完 certbot 软件后只需要简单的几句指令,就可以完成自动申请证书,自动配置 Nignx 这些操作,可谓是良心制作。

二、准备工作

准备一个已备案的域名,我这里是 blog.dkvirus.top

配置 Nginx,路径:vim /etc/nginx/conf.d/blog.conf

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name blog.dkvirus.top;

# web entrance
location / {
root /home/blog/html/public;
index index.html;
}
}

此时启动 Nginx,登录的网站应该是个 http 的网站。

三、安装 Certbot 软件

切换到 root 用户根目录

1
# cd /root/

下载 certbot-auto 自动化工具并添加执行权限

1
2
# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto

四、申请证书并自动化配置 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
# certbot-auto --nginx
[root@hd1h2g ~]# ./certbot-auto --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx

# 选择你要升级 https 的那个域名
Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: blog.dkvirus.top
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 # 输入 1 选择第一个域名即可
......

# 选择是否重定向,即当输入 blog.dkvirus.top 会自动重定向到 https://blog.dkvirus.top
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
# 选择 2,自动重定向,certbot 工具会自动配置你的 Nginx 配置文件
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/blog.conf

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://blog.dkvirus.top

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=blog.dkvirus.top

上述操作会出现命令行交互提示:

第一个问题是让你选择要升级为 https 的那个域名,输入域名前面的阿拉伯数字。

第二个问题是问你要不要配置重定向,即当输入 blog.dkvirus.top 时都会重定向为 https://blog.dkvirus.top。输入 2,certbot 工具会自动修改 blog.conf 配置文件。

其实还有个隐形的操作,就是 certbot 自动申请完证书之后,也会帮助配置到 blog.conf 配置文件中。

此时,在打开 /etc/nginx/conf.d/blog.conf 配置文件查看,会发现大变样。Certbot 帮我们做了所有的事。

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
server {
server_name blog.dkvirus.top;

# web entrance
location / {
root /home/blog/html/public;
index index.html;
}

# 配置证书
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/blog.dkvirus.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/blog.dkvirus.top/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
# 配置重定向
if ($host = blog.dkvirus.top) {
return 301 https://$host$request_uri;
} # managed by Certbot


server_name blog.dkvirus.top;
listen 80;
return 404; # managed by Certbot
}

五、测试结果

重启 # systemctl restart nginx,输入网址可以看到已经变化成 https 的网站了。

可能会有个小问题,如果你的网站里引入了 http 的其它请求,即便你的网站整体升级为 https 网站,前面也不会出现绿色的小锁,而是灰色的感叹号。检查你的网站,并替换其它引用的 http 链接即可。

六、可能遇到的问题

dk 证书三个月之后过期了,重新申请证书,一直报下面这个错误。

1
remote error: tls: handshake failure

原因是用了 cdn 加速网站导致,临时关闭 cdn 映射,将域名 blog.dkvirus.top 解析为 IP 地址再申请证书就没问题了,证书申请成功之后可以再映射回 cdn 域名。

首页
友链
归档
dkvirus
动态
RSS