Certbot免费获取SSL证书
前言
HTTPS
(Hyper Text Transfer Protocol over Secure Socket Layer)
即超文本传输安全协议,是一种通过计算机网络进行安全通信的传输协议,由网景公司于1994年首次提出。
其解决了 信任主机的问题 与 通讯过程中的数据的泄密和被篡改的问题
其开发的主要目的是提供对网站服务器的身份认证,以保护交换数据的隐私与完整性。
Certbot
Certbot是一个免费、开源的自动化工具,可用于为Web服务器配置和管理TLS/SSL证书,以确保安全地加密网络通信。它最初由EFF(Electronic Frontier Foundation)创建,并由Let’s Encrypt项目资助和维护。
Certbot支持大多数主流Web服务器,包括Apache、Nginx和IIS,可以在Linux、Unix、Mac OS X和Windows等操作系统上运行。它使用ACME协议自动获取、验证和安装SSL/TLS证书,并支持自动续订证书,无需人工干预。
默认使用Nginx
使用python方式获取证书
1. SSH 进入服务器
以具有 sudo 权限的用户身份通过 SSH 连接到运行 HTTP 网站的服务器。 安装系统依赖
系统依赖可能包括Python 3.6+,包括venv模块和Augeas用于Apache插件。
如果您在安装cryptography时遇到问题,您可能需要安装其他依赖项。有关更多信息,请参阅cryptography项目的网站。
安装系统依赖项的命令可能如下所示,在服务器上的命令行上运行
- 对于基于 APT 的发行版(例如 Debian、Ubuntu …):
sudo apt install python3 python3-venv libaugeas0
- 对于基于 RPM 的发行版(例如 Fedora、CentOS …):
sudo dnf install python3 augeas-libs
请注意,旧发行版使用
yum
代替dnf
,并且基于RHEL的发行版使用python3X
代替python3
(例如python36
).
这些软件包在其他发行版中的名称可能略有不同; 比如 “augeas on" 之类的搜索可能会有用。
删除 certbot-auto 和任何 Certbot 操作系统包
如果您使用操作系统包管理器安装了任何 Certbot 包,例如 apt, dnf, 或者 yum,您应该在安装 Certbot snap 之前删除它们,以确保在运行命令时 certbot使用快照而不是从您的操作系统安装 包管理器。 执行此操作的确切命令取决于您的操作系统,但是 常见的例子是 sudo apt-get remove certbot, sudo dnf remove certbot, 或者 sudo yum remove certbot. 设置 Python 虚拟环境
在机器上的命令行中执行以下指令来设置虚拟环境。
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
安装 Certbot
在机器的命令行上运行此命令以安装 Certbot。
sudo /opt/certbot/bin/pip install certbot certbot-nginx
准备 Certbot 命令
在本机命令行执行如下指令,确保 certbot命令可以运行。
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
选择您想如何运行 Certbot
可以暂时停止您的网站吗?
是的,我的网络服务器目前没有在这台机器上运行。
停止您的网络服务器,然后运行此命令以获取证书。 Certbot 将临时在您的计算机上启动网络服务器。
sudo certbot certonly --standalone
不,我需要让我的网络服务器保持运行。
如果您的网络服务器已经在使用端口 80,并且不想在 Certbot 运行时停止它,请运行此命令并按照终端中的说明进行操作。
sudo certbot certonly --webroot /usr/share/nginx/html
/usr/share/nginx/html 是Nginx配置的root目录
设置自动续订
我们建议运行以下行,这会将一个 cron 作业添加到默认的 crontab。
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
确认 Certbot 有效
要确认您的网站设置正确,请访问 https://yourwebsite.com/ 在浏览器中查找 URL 栏中的锁图标。
[每月] 升级certbot
偶尔更新 Certbot 以使其保持最新状态很重要。 因此,请在服务器的命令行中运行以下命令。
sudo /opt/certbot/bin/pip install --upgrade certbot
使用docke方式获取证书
- 关闭服务器运行
docker run -it --rm --name certbot -v /etc/letsencrypt/:/etc/letsencrypt/ \ -v /var/lib/letsencrypt/:/var/lib/letsencrypt/ \ -p 80:80 -p 443:443 \ certbot/certbot certonly \ --standalone
- 不关闭服务器运行
docker run -it --rm --name certbot -v /etc/letsencrypt/:/etc/letsencrypt/ \ -v /var/lib/letsencrypt/:/var/lib/letsencrypt/ \ -v /usr/share/nginx/html/:/usr/share/nginx/html/ \ certbot/certbot certonly \ --webroot /usr/share/nginx/html