Docker 容器中运行Certbot获取和管理 SSL 证书

如果你在 Docker 容器中运行 Nginx 并希望使用 Certbot 获取和管理 SSL 证书,可以使用 Certbot 的官方 Docker 镜像来完成这项工作。以下是使用 Docker 和 Certbot 获取 SSL 证书并配置 Nginx 的详细步骤:

1. 拉取 Certbot Docker 镜像

首先,确保你已经安装了 Docker。然后,拉取 Certbot 的官方 Docker 镜像:

docker pull certbot/certbot

2. 停止 Nginx 容器

在获取 SSL 证书时,Certbot 需要绑定 80 端口,因此需要暂时停止 Nginx 容器:

docker stop <nginx-container-name>

<nginx-container-name> 替换为你的 Nginx 容器名称。

3. 获取 SSL 证书

使用 Certbot Docker 容器获取 SSL 证书。以下命令将获取证书并存储在本地目录中(例如 /etc/letsencrypt):

docker run -it --rm \
    -v /etc/letsencrypt:/etc/letsencrypt \
    -v /var/lib/letsencrypt:/var/lib/letsencrypt \
    -v /path/to/your/webroot:/var/www/html \
    certbot/certbot certonly --webroot \
    --webroot-path /var/www/html \
    --email your-email@example.com \
    --agree-tos \
    --no-eff-email \
    -d example.com -d www.example.com

请将以下内容替换为你的实际值:

  • /path/to/your/webroot:替换为你的 Web 根目录路径。
  • your-email@example.com:替换为你的电子邮件地址。
  • example.comwww.example.com:替换为你的域名。

4. 配置 Nginx 使用 SSL 证书

在 Nginx 配置文件中设置使用新获取的 SSL 证书。以下是一个示例配置:

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

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

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

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

example.com 替换为你的域名,并确保证书路径与实际路径一致。

5. 启动 Nginx 容器

在更新了 Nginx 配置后,重新启动 Nginx 容器:

docker start <nginx-container-name>

6. 设置自动续订

Certbot 的证书有效期为 90 天,需要设置自动续订。可以通过创建一个 cron job 来自动运行续订命令:

0 0,12 * * * docker run -it --rm \
    -v /etc/letsencrypt:/etc/letsencrypt \
    -v /var/lib/letsencrypt:/var/lib/letsencrypt \
    -v /path/to/your/webroot:/var/www/html \
    certbot/certbot renew --webroot --webroot-path /var/www/html --quiet

这行命令将每天两次检查和续订证书。

通过以上步骤,你可以使用 Docker 中的 Certbot 容器来获取和管理 SSL 证书,并在 Docker 中运行的 Nginx 服务器上配置 SSL。

相关推荐

  1. Docker 容器运行Certbot获取管理 SSL 证书

    2024-06-08 07:28:10       10 阅读
  2. Linux上使用Certbot生成免费SSL证书

    2024-06-08 07:28:10       40 阅读
  3. docker运行mysql容器

    2024-06-08 07:28:10       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 07:28:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 07:28:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 07:28:10       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 07:28:10       20 阅读

热门阅读

  1. 【leetcode】LRU & LFU

    2024-06-08 07:28:10       9 阅读
  2. 力扣1574.删除最短的子数组使剩余数组有序

    2024-06-08 07:28:10       8 阅读
  3. setattr前端接收方法深度解析

    2024-06-08 07:28:10       6 阅读
  4. VmWare的网络配置说明

    2024-06-08 07:28:10       8 阅读
  5. WPF添加动画过渡效果

    2024-06-08 07:28:10       8 阅读
  6. 2024华为OD机试真题-出租车计费-C++(C卷D卷)

    2024-06-08 07:28:10       10 阅读
  7. Android系统中xml的解压与压缩

    2024-06-08 07:28:10       11 阅读
  8. 京准电子 GPS网络时间服务器为工业4.0保驾护航

    2024-06-08 07:28:10       8 阅读
  9. github使用教程

    2024-06-08 07:28:10       9 阅读
  10. 2、Spring之Bean生命周期~扫描

    2024-06-08 07:28:10       7 阅读
  11. spring boot中常用的多线程案例

    2024-06-08 07:28:10       10 阅读
  12. Android基础-Fragment详解

    2024-06-08 07:28:10       9 阅读
  13. Spring Boot集成geodesy实现距离计算

    2024-06-08 07:28:10       9 阅读