用到certbot,官网:certbot.eff.org/
系统环境:Centos7,跟着下面每行命令照着输入就行:
yum install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
- 下面这步可能需要等待1分钟左右的时间
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
- 在nginx.conf里面配置想要申请证书的域名,同时这一步也是后续增加其他域名的HTTPS证书的开始步骤
例如:
server {
server_name abc.com
}
- 这一步需要看nginx配置目录在哪里,用nginx -t命令可以查看,然后把路径输入到conf目录为止就行,例如我的是在/www/server/nginx/conf
certbot --nginx --nginx-server-root /www/server/nginx/conf
然后就会有生成证书引导:输入邮箱、同意条款、选择域名(有哪些域名能选择取决于你的nginx.conf配置了哪些域名,例如上一步配置了abc.com
)等等
搞完了之后就会给你的nginx配置自动写上你之前选择的域名的https配置,就成功开启HTTPS了,并且certbot会建立脚本来检测过期的证书,实现自动续期
举例nginx的一个网站初步完整的配置:
server {
# 监听80端口,也就是域名默认的
listen 80;
# 网站前端文件位置
root /www/wwwroot/test_spring/dist;
# 监听域名
server_name XXX.com;
# 网站访问日志
error_log /www/wwwroot/test_spring/error.log;
# 网站错误日志
access_log /www/wwwroot/test_spring/access.log;
# 强制HTTPS(原理为如访问的端口非443则都强制跳到https)
if ($server_port !~ 443) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
# 向HTTP响应头中添加HSTS策略,有助于提高通信的安全性
add_header Strict-Transport-Security "max-age=31536000";
# Certbot自动生成的https配置开始
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/XXX.XXX.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/tXXX.XXX.top/privkey.pem; # managed by Certbot
# 引入Certbot生成的SSL/TLS的最佳实践配置选项,如ssl_protocols等等
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
# Certbot自动生成的https配置结束
}