certbot证书和SSL证书是一个东西,各大厂商都会有ssl证书的下载流程,但是ssl证书会收费,相比较之下,certbot证书的优点就是免费,可以同时布置多个域名,并且操作步骤十分简单。
1.以CentOS为例,看看自己的服务器是不是CentOS再进行操作
yum update
yum install certbot -y
2.直接在任意目录输入:certbot certonly,出现如下两个选项:
选项1适用于还没有搭建服务器的情况,因为默认采用80端口,如果有其他程序占用了,如nginx,需要先关闭。选项2适用已搭建服务器的情况,可以根据网站目录验证后生成,不占用端口。这里采用1方法,输入1回车。第一次使用,需要输入邮箱,最好填真实邮箱,90天快到期了会有邮件提示。其他的根据提示输入Y,最后需要输入自己的域名:www.gaodh.top
生成的证书文件保存在/etc/letsencrypt/live/api.example.com/下。
3.nginx配置ssl证书
打开nginx配置文件nginx.conf,添加443端口监听,http转https,配置证书目录
1.进入conf目录
cd /usr/local/nginx/conf
2.打开nginx.conf文件
vi nginx.conf
3.直接复制然后替换server_name:自己的域名; ssl_certificate:自动下载的文件ssl_certificate_key:自动下载的文件;root:项目路径。
server{
listen 80;
listen 443 ssl http2;
server_name www.gaodh.top;
index index.php index.html index.htm default.php default.htm default.html;
root /www/web/dist;
#强制SSL
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#SSL-START SSL相关配置
#error_page 404/404.html;
ssl_certificate /etc/letsencrypt/live/www.gaodh.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.gaodh.top/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
}
保存文件后重启nginx,就可以https访问了。云服务器注意安全组开放443端口,否则无法访问。
成功就会出现如下信息:
4.手动续期
证书的有效期是三个月,所以在证书到期前的一个月要进行证书续期。
1.先暂停nginx服务
# 进入执行目录
cd /root/usr/local/nginx/sbin
# 执行命令
./nginx -s stop
2.certbot续期命令
certbot renew