深色模式
使用certbot手动申请ssl证书
为什么要手动申请证书
certbot
自动申请证书很方便,但是有一些局限,比如,为CNAME
域名申请证书时,如果CNAME
指向别人的服务器(很常见),则不能自动申请了。
手动申请步骤:
- 输入
certbot
命令 - 按提示继续
- 手动添加
DNS
记录 - 验证
DNS
记录 - 确认,获取证书
步骤详细说明
这里以域名123.com
为例,申请ssl证书。
输入certbot命令
(没有安装certbot
要先安装,可使用brew
安装。)
sh
sudo certbot certonly --manual --preferred-challenges dns -d 123.com
按提示继续
会要求输入一个邮箱,要求同意一些协议。
手动添加DNS记录
按照提示,在域名解析中添加一条TXT
记录,记录名、记录值均由提示给出:
Please deploy a DNS TXT record under the name:
_acme-challenge.123.com.
with the following value:
aaaaabbbbbccccc_dddddeeeeefffffggggghhhhhii
登录XX云,为123.com
添加一条解析记录,记录名是_acme-challenge
,类型是TXT
,值是aaaaabbbbbccccc_dddddeeeeefffffggggghhhhhii
。
(记录值是随机的,这里aaaaabbbbbccccc_dddddeeeeefffffggggghhhhhii
只是举例。)
注意:添加成功以后,要自己先验证DNS
,验证OK,输入Enter
键,就完成了。
验证DNS记录
使用dig命令:
sh
dig TXT _acme-challenge.123.com
如果解析成功,可以看到上一步添加的记录值:
;; ANSWER SECTION:
_acme-challenge.123.com. 600 IN TXT "aaaaabbbbbccccc_dddddeeeeefffffggggghhhhhii"
确认,获取证书
输入Enter,即可得到证书文件。
在控制台中会输出证书文件的保存路径,默认是/etc/letsencrypt/live
。
注意:
此目录的权限是700
,即drwx------
,无法直接访问,可通过sudo
复制出来:
sh
mkdir -p ~/Downloads/123.com && sudo cp -r /etc/letsencrypt/live/123.com/ ~/Downloads/123.com/
复制出来后,privkey.pem
的权限可能变为-rw-------
,不可读,需要修改权限:
sh
sudo chmod a+r privkey.pem
证书文件
一共得到5个文件:
sh
sudo ls -al /etc/letsencrypt/live/123.com
drwxr-xr-x 7 root wheel 224 9 19 16:17 .
drwx------ 4 root wheel 128 9 19 16:17 ..
-rw-r--r-- 1 root wheel 692 9 19 16:17 README
lrwxr-xr-x 1 root wheel 40 9 19 16:17 cert.pem -> ../../archive/123.com/cert1.pem
lrwxr-xr-x 1 root wheel 41 9 19 16:17 chain.pem -> ../../archive/123.com/chain1.pem
lrwxr-xr-x 1 root wheel 45 9 19 16:17 fullchain.pem -> ../../archive/123.com/fullchain1.pem
lrwxr-xr-x 1 root wheel 43 9 19 16:17 privkey.pem -> ../../archive/123.com/privkey1.pem
当你通过 Certbot 申请到 SSL 证书后,会在 /etc/letsencrypt/live/yourdomain.com/
目录下生成几个文件。每个文件都有其特定的作用,以下是它们的详细说明:
README
该文件是一个说明文档,解释了这些证书文件的用途和如何使用它们。
cert.pem
这是 服务器的主证书,即为你的域名颁发的 SSL 证书。它只包含你的域名的证书,不包含中间证书或根证书。
在服务器配置中,
cert.pem
是单独提供域名证书时使用的文件。在大多数情况下,会用fullchain.pem
而不是单独使用cert.pem
。chain.pem
这是 证书链 文件,包含中间证书(Intermediate Certificate)。中间证书是由根证书颁发的证书,用来帮助客户端(如浏览器)验证你的服务器证书的有效性。
某些服务器配置可能会要求单独提供证书链。现代的服务器配置一般会使用
fullchain.pem
,因为它包含了cert.pem
和chain.pem
的组合。fullchain.pem
这是 完整的证书链,即你的域名证书(
cert.pem
)和中间证书(chain.pem
)的组合。这个文件通常被用于大多数 Web 服务器配置,因为它提供了完整的证书验证链。在 Nginx 或 Apache 中,通常会使用
fullchain.pem
作为ssl_certificate
,因为它包含所有必要的证书信息。privkey.pem
这是 私钥,与服务器的公钥(即
cert.pem
)配对。私钥是加密通信的关键部分,用于解密从客户端发送的加密数据。私钥文件是非常敏感的,只能由服务器访问。在服务器配置中,你需要将
privkey.pem
与fullchain.pem
或cert.pem
一起使用。
总结:通常,只需要fullchain.pem
和privkey.pem
这2个文件,也就是证书和私钥。