centos 7.x 配置 https 证书笔记

本笔记操作的环境:
系统: cento 7.5

1、安装 snap

sudo yum install snapd

sudo systemctl enable --now snapd.socket

sudo ln -s /var/lib/snapd/snap /snap

2、 确认 snap 是最新的

sudo snap install core

sudo snap refresh core

3、移除旧的 certbot-auto 或者其他 certbot os 包

# sudo apt-get remove certbot # ubuntu 用这个
# sudo dnf remove certbot
sudo yum remove certbot # 我这里用的这个

4、安装 certbot

sudo snap install --classic certbot

5、软件接到系统目录, 方便调用.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

6、生成证书(我这里采用了 certonly, 所以下文需要手动在 nginx 中配置证书)

具体参数的含义可以通过 certbot --help 查看

certbot certonly --webroot --webroot-path /home/wwwroot/xxx.com/ -d xxx.com --agree-tos --email 通知邮箱

7、在 nginx 的配置文件中,配置 ssl 证书, vim /etc/nginx.conf (根据自己的实际目录操作)

// 部分供参考

# 将 http 请求重定向到 https
server {
    listen 80;
    server_name xxx.com;
    rewrite ^(.*)https://xxx.com:443/1 permanent; # 永久将 http://xxx.com 重定向到 https://xxx.com, 根据是否要保留 http://xxx.com 访问决定是否配置。
}
server
{
    listen 443 ssl;
    # 上面步骤证书生成之后会提示证书路径,或者通过 certbot certificates 命令查看证书位置.
    ssl_certificate /证书路径/fullchain.pem;
    ssl_certificate_key /证书路径/privkey.pem;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    server_name xxx.com; # 站点域名
    index index.html index.htm index.php;
    root  /home/wwwroot/xxx.com; # 站点实际的 web 目录
... # 省略更多

8、设置定时计划每 2.5 个月更新证书(因为免费证书有效期只有三个月)

a、renew.sh 的脚本

#/bin/sh
sudo certbot renew

b、设置定时计划 vim /etc/crontab

* * * 2 20 root /更新脚本的绝对路径/renew.sh

踩过的坑, certbot 命令似乎会从读取一个配置文件,但我不知道那个是配置文件,于是每次提示 /etc/nginx/xxx not found 就做一个软连接, 终于搞好了。

参考:
https://certbot.eff.org/lets-encrypt/centosrhel7-nginx
https://snapcraft.io/docs/installing-snapd

其他的安装证书方式参考:
https://github.com/acmesh-official/acme.sh

你可能感兴趣的:(linux,centos,nginx,ssl,证书)