什么是 Certbot?
Certbot 是一个免费的开源软件工具,用于在手动管理的网站上自动使用Let's Encrypt证书以启用 HTTPS。
Certbot 由电子前沿基金会 (EFF) 开发,这是一家位于加利福尼亚州旧金山的 501(c)3 非营利组织,旨在捍卫数字隐私、言论自由和创新。
免费SSL证书机器人网站:https://certbot.eff.org/
快速申请免费SSL域名证书
首先打开EFF官方网站https://certbot.eff.org/
点击certbot指令,进入到https证书申请页面上。
在Software中选择你服务器上使用的HTTP服务端,在后面的System中选择你服务器的操作系统,下面以Centos8下的Nginx为例子,快速申请https域名证书。
CentOS 8 下的 Nginx申请免费SSL证书
Certbot snap 支持 x86_64、ARMv7 和 ARMv8 架构。虽然我们强烈建议大多数用户通过 snap 安装 Certbot,但您可以在此处找到替代安装说明。
1.SSH 进入服务器
以具有 sudo 权限的用户身份通过 SSH 连接到运行您的 HTTP 网站的服务器。
2.安装 snapd
您需要安装 snapd 并确保按照任何说明启用经典 snap 支持。
按照snapcraft 网站上的这些说明安装 snapd。
在 CentOS8 上安装 snap
从 7.6 版本开始,Snap 可用于CentOS 8和 CentOS 7。它也可用于 Red Hat Enterprise Linux (RHEL) 7.6+。
CentOS 8 和 CentOS 7 的软件包位于每个发行版各自的Extra Packages for Enterprise Linux (EPEL) 存储库中。在 CentOS 8 和 CentOS 7 之间添加此存储库的说明略有不同,这就是它们在下面单独列出的原因。
如果您需要知道您运行的是哪个版本的 CentOS,请输入:
1
|
cat /etc/centos-release
|
如果您还没有将 CentOS 存储库添加到您的发行版中,可以按如下方式添加。
可以使用以下命令将 EPEL 存储库添加到 CentOS 8 系统:
1
2 |
sudo dnf install epel-release
sudo dnf upgrade |
安装 snapd
将 EPEL 存储库添加到 CentOS 安装后,只需安装snapd包:
1
|
sudo yum install snapd
|
安装后,需要启用管理主 snap 通信套接字的systemd单元:
1
|
sudo systemctl enable --now snapd.socket
|
要启用经典snap 支持,请输入以下内容以在/var/lib/snapd/snap和之间创建符号链接/snap:
1
|
sudo ln -s /var/lib/snapd/snap /snap
|
注意:重新启动系统以确保正确更新 snap 的路径。Snap 现已安装并准备就绪了!
3.确保您的 snapd 版本是最新的
在机器上的命令行执行以下说明,确保您拥有最新版本的snapd。
1
|
sudo snap install core
|
4.删除 certbot-auto 和任何 Certbot OS 包
如果您使用操作系统包管理器(如apt、dnf或 )安装了任何 Certbot 包 yum,则应在安装 Certbot snap 之前将其删除,以确保在运行命令时使用的certbot是 snap,而不是从操作系统包管理器安装。具体的命令做到这一点取决于您的操作系统,centos8的卸载命令:
1
|
sudo dnf remove certbot
|
如果您之前通过 certbot-auto 脚本使用过 Certbot,您还应该按照此处的说明删除其安装。
5.安装免费SSL证书机器人
在机器上的命令行上运行此命令以安装 Certbot。
1
|
sudo snap install --classic certbot
|
6.准备 Certbot 命令
在机器上的命令行执行以下指令,确保certbot命令可以运行。
1
|
sudo ln -s /snap/bin/certbot /usr/bin/certbot
|
7.选择您希望如何运行 Certbot
手动设置证书:如果您只想申请证书,并希望手动更改 nginx 配置,请运行此命令。
1
|
sudo certbot certonly --nginx
|
自动设置证书:运行下面命令以获取证书并让 Certbot 自动编辑您的 nginx 配置以提供服务,只需几步即可打开 HTTPS 访问。
1
|
sudo certbot --nginx
|
第一步:输入电子邮件地址(用于紧急续订和安全通知)(输入'c'取消):输入你的电子邮件,或者按 C 取消。
第二步:请阅读服务条款,网址为https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf。 你必须同意以注册 ACME 服务器。 你同意?选择:Y
第三步:一旦您的第一个证书成功颁发,您是否愿意与电子前沿基金会共享您的电子邮件地址Let's Encrypt 项目和非营利组织的合作伙伴开发 Certbot? 我们想向您发送有关我们加密网络工作的电子邮件,EFF 新闻、活动和支持数字自由的方式。选择:Y
第四步:您要为哪些名称激活 HTTPS?选择用逗号和/或空格分隔的适当数字,或留下输入空白选择显示的所有选项(输入“c”取消):回车后开始申请域名证书
成功获得证书。
证书保存在:/etc/letsencrypt/live/uzbox.tk/fullchain.pem
密钥保存在:/etc/letsencrypt/live/uzbox.tk/privkey.pem
该证书将于 2022-03-07 到期。这些文件将在证书续订时更新。Certbot 已经设置了一个计划任务在后台自动更新这个证书。
部署证书
uzbox.tk证书成功部署到/etc/nginx/nginx.conf
恭喜! 您已在 https://uzbox.tk 上成功启用 HTTPS
8.免费SSL自动续订测试
您系统上的 Certbot 软件包带有一个 cron 作业或 systemd 计时器,它们会在您的证书到期之前自动更新您的证书。除非您更改配置,否则您无需再次运行 Certbot。您可以通过运行以下命令来测试证书的自动续订:
1
|
sudo certbot renew --dry-run
|
更新 certbot 的命令安装在以下位置之一:
- /etc/crontab/
- /etc/cron.*/*
- systemctl list-timers
9.确认 Certbot 工作
要确认您的站点设置正确,请访问您的网站是否能正常打开,并在浏览器的 URL 栏中查找锁头的图标。
10.如何在ssl证书内新增域名
在同一台服务器上建立多个网站的时候,每个网站的域名都需要申请ssl证书。Certbot证书机器人可以将nginx内的所有域名,统一存放在一套ssl证书中。方便SSL证书管理更新维护!
新增加域名到SSL证书中的方法:
在nginx中配置绑定你需要申请证书的新域名,域名绑定后,重新启动nginx服务,或者重新启动服务器使nginx配置生效。然后在服务器上输入下面的命令,使用Certbot证书机器人开始申请证书。
1
|
sudo certbot certonly --nginx
|
使用上面命令,手动设置SSL域名证书。
1
2 3 4 5 6 7 8 9 10 |
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Which names would you like to activate HTTPS for? 2: nginx中你之前申请过的域名 |
按回车键进行下一步申请。
1
2 3 4 5 6 7 8 9 10 11 |
You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/uzbox.tk.conf) It contains these names: 证书中原有的域名 You requested these names for the new certificate: 新增域名后,全部的域名 Do you want to expand and replace this existing certificate with the new |
按E进行下一步操作。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
Renewing an existing certificate for uzbox.tk and 4 more domains
Successfully received certificate. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
新的域名ssl证书申请好了,域名ssl证书地址还是之前的证书地址,在nginx中无需更改。