.. title: Certbot用法,用Certbot获取Let’s Encrypt的免费TLS证书 .. slug: .. date: Mon 20 Jan 2025 04:53:56 PM UTC Certbot 是命令行软件,人们借助它来自动地申请、续约Web站点地TLS证书。 ## 安装 Certbot 在使用Certbot之前,需要先安装好它。在不同的操作环境下有不同的安装方法,可根据自己的实际需求来安装。 可以运行以下命令,从 EPEL 仓库中安装 Certbot: sudo yum install certbot 生成 Dh (Diffie-Hellman) 组 Diffie–Hellman 密匙交换是一种可以在不安全的通信信道上安全交换密钥的方法。 现在运行以下命令,可以来生成一个新的 2048 位的 DH 参数: openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 2048 位,生成时间大概 3-5 分钟左右。当然,如果您愿意也可以将大小改为 4096 位,但是这样的话,可能生成的时间至少需要花费 30 分钟,此操作具体时长取决于系统熵。 生成 SSL 证书 certbot certonly --manual \ --preferred-challenges=dns \ --email marcin@hotmail.com \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos \ --manual-public-ip-logging-ok \ -d "*.domain.com" 例: certbot certonly --manual \ --preferred-challenges=dns \ --email jerrywang@pixelshift.ai \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos \ --manual-public-ip-logging-ok \ -d "*.local.aniplay.co" 回车之后会问你是否支持并且加入到开源贡献当中去 并且会让你去域名管理处添加一条txt解析记录 _acme-challenge.play.co => txt记录至 qs4-5l-ssdfgRZ3sdfgsdfgM7YfgfghfghsdfghzLWT8n-s 1 _acme-challenge.play.co => txt记录至 qs4-5l-ssdfgRZ3sdfgsdfgM7YfgfghfghsdfghzLWT8n-s Please deploy a DNS TXT record under the name _acme-challenge.local.aniplay.co with the following value: qs4-5l-ssdfgRZ3sdfgsdfgM7YfgfghfghsdfghzLWT8n-s 1 2 3 4 Please deploy a DNS TXT record under the name _acme-challenge.local.aniplay.co with the following value: qs4-5l-ssdfgRZ3sdfgsdfgM7YfgfghfghsdfghzLWT8n-s txt记录添加到位后,按Enter继续,您将在下面显示所需的输出。 Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Obtaining a new certificate Performing the following challenges: dns-01 challenge for domain.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.domain.com with the following value: SiPbTUGdqp37WnMNnG17N4qoZEVIiuO_MivrrhYmW-Y Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/domain.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/domain.com/privkey.pem Your cert will expire on 2020-09-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" 证书生成完毕后,你会得到4个文件 cd /etc/letsencrypt/live/domain.com/ ls cert.pem chain.pem fullchain.pem privkey.pem 1 2 3 4 cd /etc/letsencrypt/live/domain.com/ ls cert.pem chain.pem fullchain.pem privkey.pem privkey.pem #证书的私钥。 fullchain.pem #所有证书,包括服务器证书(又名叶子证书或最终实体证书)。服务器证书是此文件中的第一个证书,其后是任何中间证书。 cert.pem,chain.pem #本身包含服务器证书,并chain.pem包含Web浏览器为了验证服务器证书将需要的其他中间证书。如果你提供一个这样的文件到您的Web服务器,你必须提供他们两个,或有些浏览器会显示"此连接不受信任"的错误为您的网站 1 2 3 privkey.pem #证书的私钥。 fullchain.pem #所有证书,包括服务器证书(又名叶子证书或最终实体证书)。服务器证书是此文件中的第一个证书,其后是任何中间证书。 cert.pem,chain.pem #本身包含服务器证书,并chain.pem包含Web浏览器为了验证服务器证书将需要的其他中间证书。如果你提供一个这样的文件到您的Web服务器,你必须提供他们两个,或有些浏览器会显示"此连接不受信任"的错误为您的网站 验证由Certbot生成的SSL证书的有效性 为此,您可以运行以下命令 certbot certificates 1 certbot certificates Found the following certs: Certificate Name: domain.com Serial Number: 4c006834c40af115ed6336331bc93034c97 Domains: *.domain.com Expiry Date: 2020-09-06 07:51:47+00:00 (VALID: 89 days) Certificate Path: /etc/letsencrypt/live/domain.com/fullchain.pem Private Key Path: /etc/letsencrypt/live/domain.com/privkey.pem Certificate Name: domain.io Serial Number: 318d565040c512614e31c77e938f024d256 Domains: *.domain.io Expiry Date: 2020-09-06 06:28:59+00:00 (VALID: 89 days) Certificate Path: /etc/letsencrypt/live/domain.io/fullchain.pem Private Key Path: /etc/letsencrypt/live/domain.io/privkey.pem Certificate Name: domain.net Serial Number: 31a5f3ecf68387f2a023758f2a7cac58b93 Domains: *.domain.net Expiry Date: 2020-09-06 07:47:34+00:00 (VALID: 89 days) Certificate Path: /etc/letsencrypt/live/domain.net/fullchain.pem Private Key Path: /etc/letsencrypt/live/domain.net/privkey.pem 请注意,在上面的输出中,我为三个不同的域提供了三个通配符SSL证书。 将证书部署至nginx请看:https://zhuanlan.zhihu.com/p/57155589 重要说明,每个证书的有效期为90天,因此建议根据文档每60天更新一次。 续订: 从0.10.0版开始,Certbot支持一项操作,以检查所有已安装的证书是否即将到期,并尝试执行以下操作:renew更新 他们。最简单的形式就是在命令行直接运行: certbot renew 更新相关请看 :https://certbot.eff.org/docs/using.html?highlight=renew#renewing-certificates