给站点开启https

邱秋 • 2017年11月04日 • 阅读:3000 • https

安装snapd

在 CentOS 7 上,默认情况下,snapd 并未包含在官方的 Yum 仓库中。

CentOS 7 的 EPEL(Extra Packages for Enterprise Linux)仓库提供了许多额外的软件包,其中包括 snapd。

# 1.    启用 EPEL 仓库 , 如果安装epel-release之后依然不行, 卸载再次安装
sudo yum install epel-release -y
# 2.    更新包索引
sudo yum update -y
# 3.    安装 snapd
sudo yum install snapd -y
# 4.    启用并启动 snapd 服务
sudo systemctl enable --now snapd.socket
# 5.    创建符号链接(可选)
sudo ln -s /var/lib/snapd/snap /snap

安装 Certbot

在机器上的命令行上运行此命令来安装 Certbot。

# 安装 Certbot
sudo snap install--classic certbot

# 准备 Certbot 命令
sudo ln -s /snap/bin/certbot /usr/bin/certbot

生成证书

sudo certbot certonly --nginx --email xxx@email.com  -d aaaa.com -d www.bbbb.com -d cccc.com

正常情况会得到 如下:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/aaaa.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for aaaa.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/bbbb.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for aaaa.com and bbbb.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/aaaa.com/fullchain.pem (success)
  /etc/letsencrypt/live/bbbb.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

配置证书

编辑 Nginx 的站点配置文件(通常在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 中):

server {
    listen 80;
    server_name aaaa.com www.aaaa.com;

    # 自动将 HTTP 重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name aaaa.com www.aaaa.com;

    # SSL 证书配置
    ssl_certificate /etc/letsencrypt/live/aaaa.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/aaaa.com/privkey.pem;

    # 推荐的 SSL 配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 网站根目录和其他配置
    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

最后重启Nginx服务:

使用Cron定时更新证书

# 1 . 确保 Certbot 安装正确
sudo certbot renew --dry-run

# 2. 编辑定时器
sudo crontab -e

# 3.在文件末尾添加以下行:
0 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx

# 0 3 * * * 表示每天凌晨 3 点执行
# /usr/bin/certbot renew --quiet 是 Certbot 的自动续期命令,--quiet 禁止输出非必要信息。
# systemctl reload nginx 在续期后重新加载 Nginx 配置。

使用 Systemd 定时服务更新证书

创建定时任务文件

vi /etc/systemd/system/certbot-renew.service

内容如下:

[Unit]
Description=Certbot Renewal

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet
ExecStartPost=/bin/systemctl reload nginx

创建定时器文件

vi /etc/systemd/system/certbot-renew.timer

内容如下:

[Unit]
Description=Run Certbot Renewal Daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

启用定时器

sudo systemctl enable --now certbot-renew.timer

检查定时器状态:

systemctl list-timers | grep certbot-renew

Certbot 默认会在证书有效期小于 30 天 时尝试续期。

我,秦始皇,打钱!

相关文章

禅境花园小程序

关注前沿技术开发.