利用letsencrypt部署单域名SSL/TLS证书

本文最后更新于 2025年4月17日 早上

Let’s Encrypt是一家证书颁发机构,可以使用支持ACME协议的软件自动获取由Let’s Encrypt颁发的用于https的SSL/TLS证书。

Let’s Encrypt既支持单域名的证书,也支持泛域名/通配符证书(即*.domain.com这种形式),不过也会有所谓的速率限制,也就是一个域名可以在一周申请多少个证书(目前是50)以及一个通配符证书支持多少个子域名(目前是100)。

Let’s Encrypt提供了非常完善的文档,并且有中文版,可以点击中文版文档查看更详细的信息。

为了打字的方便,Let’s Encrypt在下文就简化成LE了。

本文仅总结通过centOS服务器和Nginx为一个单域名自动申请证书。

一、域名的必要配置

LE需要验证申请者对域名的控制权,目前有两个方式,一个是HTTP-01方式,一个是DNS-01方式。本文申请的单域名证书是通过HTTP-01的方式。这种方式要求在需要被配置证书的域名下的某个特定路径放置一个指定文件,然后LE会尝试下载这个文件并验证,一旦验证成功就可以继续申请颁发证书了。

为了能够满足这个要求,需要做两件事:

  1. 在DNS服务商配置域名解析记录,将域名解析到服务器,比如把www.bingyuan.site解析到IP为123.124.125.126的服务器上。
  2. 在被解析的服务器的nginx配置里配置server block,配置域名服务,以上面的www.bingyuan.site举例:
1
2
3
4
5
6
7
http {
server {
listen 80;
server_name www.bingyuan.site;
# ...其他配置
}
}

二、安装遵守ACME协议的客户端

官方推荐的软件是certbot,点击访问certbot官网,也可以使用其他客户端,这个文档里面有清单

截至到22年6月,certbot官网的首页差不多是这个样子的:

2022年6月certbot官网主页

在我个人看来这个指引文档写的非常棒,直接跟着去做就行了。绝大多数的服务器软件和服务器系统应该都支持了,点击中间的`My HTTP website is running on `的两个控件就会切换不同环境下的指引。
选择环境

三、申请SSL证书

安装完certbot并建立软链接后,我们就可以使用这个软件来帮忙申请证书了,这部分文档里面也有,这里以centos8上运行的nginx为例,实践一下如何操作。

申请证书并使用有两种方式,一种是获取和安装,一种是仅获取。我目前都是使用的获取和安装这种方式,说是安装,其实也就是把证书获取之后再修改nginx.conf,修改80端口的server块,在里面添加一个301响应返回一个改写为htpps的访问;并且新建一个server块监听443端口,并在这个server块中指定ssl证书的存储位置。

  1. 开启certbot并指定用于nginx certbot --nginx
  2. certbot自动搜索域名,并给出清单,选择一个数字,比如下图:
    一个域名清单示例

如果域名已经配置好,账户也录入的话,基本上就OK了,如果出了问题根据具体提示,一般也不难处理。


利用letsencrypt部署单域名SSL/TLS证书
https://www.xiebingyuan.cn/2022/06/32a4ecedec3a/
作者
bingyuan
发布于
2022年6月9日
更新于
2025年4月17日
许可协议