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

2024-06-01 18:52

本文主要是介绍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。

这篇关于Docker 容器中运行Certbot获取和管理 SSL 证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021832

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja