第一步、安装snapd
安装
sudo yum install epel-release snapd -y
sudo systemctl enable --now snapd.socket
设置软链接将源文件(/var/lib/snapd/snap)软链接到目标文件(/snap)
sudo ln -s /var/lib/snapd/snap /snap
第二步、删除旧的Certbot(如果初次安装,则跳过这步)
sudo apt-get remove certbot
或
sudo dnf remove certbot
或
sudo yum remove certbot.
第三步、通过 snapd 安装 Certbot
安装
sudo snap install --classic certbot
添加软链接
sudo ln -s /snap/bin/certbot /usr/bin/certbot
第四步、添加 SSL 证书(大部分错误会发生在这一步)
1、指定Nginx目录
sudo certbot --nginx --nginx-server-root=/usr/local/nginx/conf
执行后可能遇到错误:
Could not choose appropriate plugin: The nginx plugin is not working; there may be problems with your existing configuration.
The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.",)
一般是由于没有将nginx放到环境变量中
解决方法:设置nginx软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
ln -s /usr/local/nginx/conf/ /etc/nginx
设置完后重新执行
sudo certbot --nginx --nginx-server-root=/usr/local/nginx/conf
可能会遇到错误:
Could not choose appropriate plugin: The nginx plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('Nginx build is missing SSL module (--with-http_ssl_module).',)
发现是没有安装ssl模板导致的
1.png
找到nginx文件夹下执行:
./configure --with-http_ssl_module
make && make install
解决后重新执行:
sudo certbot --nginx --nginx-server-root=/usr/local/nginx/conf
出现以下输入邮箱的提示,表示上述问题解决
image.png
接着按照提示输入
image.png
可以看到最后虽然证书申请成功,但是并没有安装成功,根据提示“server_name”没设置好,找到nginx配置文件nginx.conf,将此处原本的location改为想要配置的域名
image.png
保存后reload一下nginx配置:
/usr/local/nginx/sbin/nginx -s reload
然后重新执行一下,就可以看到证书安装成功:
image.png
生成的证书默认会出现在/etc/letsencrypt/live文件夹下
第五步、生成DH密钥交换协议
openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048
第六步、nginx配置https
进入nginx.conf可以看到有https server的注释
image.png
按照注释配置即可:
server {
listen 443 ssl;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
ssl_certificate /etc/letsencrypt/live/www.linkk.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.linkk.top/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparams.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
保存后重启nginx(注意这里不是reload)
# 停止
nginx -s stop
# 启动
nginx
重启后https若无法访问可以检查一下云服务器的安全组配置443端口入方向是否开启
网友评论