Let'sEncrypt快速颁发及自动续签泛域名证书实践指南

如题所述

第1个回答  2022-06-25

[TOC]

描述: Let's Encrypt 是免费、开放和自动化的证书颁发机构由Linux基金会( Linux Foundation )进行日常管理维护,它为1.8亿个网站提供TLS证书的非盈利性证书颁发机构, 通过它我们可以免费申请网站证书,并您的网站上启用 HTTPS (SSL/TLS) 提供支持。

前置需求:

参考来源
Let's Encrypt 网站: https://letsencrypt.org/
ACME 协议客户端: https://letsencrypt.org/zh-cn/docs/client-options/
acme.sh WIKI: https://wiki.acme.sh
certbot Github: https://github.com/certbot/certbot

原文地址: https://blog.weiyigeek.top/2022/3-11-589.html


描述: 此处我们采用 acmesh-official 提供的 acme.sh 项目来快速搭建证书自动颁发、续签证书,其使用简单、强大且非常易于使用,它纯粹用 Shell(Unix shell)语言编写的 ACME 协议客户端,安装方式主要有 二进制文件 或者是 acme.sh💕码头工人 ( https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker )。

温馨提示: 签发的证书有效期为60天,我们可以设置cron 作业以检查和更新证书,通常证书将每60天自动更新一次。

快速安装:
安装参考地址: https://github.com/acmesh-official/acme.sh/wiki/How-to-install

至此,您现在可以发布证书了。


Q: 什么是通配符证书?
A: 在没有出现通配符证书之前,Let’s Encrypt 支持两种单域名证书、SAN证书。


申请通配符证书流程
步骤 01.如果您的 DNS 提供商支持 API 访问,我们可以使用该 API 自动颁发证书,目前 acme.sh 支持大多数 dns 提供者( https://github.com/acmesh-official/acme.sh/wiki/dnsapi ),如果您的 dns 提供商不支持任何 api 访问,您只能手动添加 txt 记录。

步骤 02.此处我已经将 weiyigeek.top域名DNS解析商设置为 Cloudflare (免费),其DNS提供上支持API访问, 在使用 acme.sh 实现自动签发证书前,我们需要再Cloudflare网站上获取用于访问 Cloudflare API 的密钥,首先 点击我的个人资料 -> API 令牌 。

步骤 03.设置 acme.sh 用于访问 Cloudflare 的 dnsapi 的相关环境变量。

步骤 04.执行如下命令,可以实现自动颁发通配符&ECDSA格式证书,Let's Encrypt 支持颁发 EC 格式证书,

步骤 05.利用openssl查看颁发的CA及其证书。

步骤 06.使用签发的证书,ingress为指定主机名称设置tls, 然后通过浏览器访问 https://demo.weiyigeek.top 站点,验证tls配置是否正常。

步骤 07.于此同时我们还可,修改 Nginx 配置文件启用 ssl,记得修改完成后需要重启下 Nginx。

温馨提示: Nginx 的配置 ssl_certificate 和 ssl_trusted_certificate 使用 fullchain.cer ,而非 <domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误

步骤 08.创建 cron 作业以检查和更新证书,添加force参数60天后强制更新。


Q: 将默认 CA 更改为 ZeroSSL?
A: 通常情况下 acme.sh 使用letsencrypt作为默认CA, 当前可以将默认CA更改为 ZeroSSL( https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA ),但实际上并不建议这样做,因为,Let's Encrypt 可以颁发 EC 证书,而 ZeroSSL.com 则不支持颁发。


Q: 如何颁发包含多个域的单个证书,每个域使用不同的验证方法 多域、SAN模式、Hybrid模式 。


Q: 如何生成pkcs12(pfx) 格式证书?


Q: 如何从从现有 CSR 颁发证书?


Q: 如何进行证书签发通知?
A: acme.sh 可以在 cronjob 中发送通知, 通知可以是电子邮件或任何其他支持的方式,例如请求 webhook 等, 参考地址: https://github.com/acmesh-official/acme.sh/wiki/notify


Q: acme.sh 除了支持Cloudflare还支持那些DNSAPI供应商
描述: acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。


安装部署RSA、ECC双证书(使用DNSPod API)



书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发】(人间五大情),这将对我的肯定,谢谢支持!(๑′ᴗ‵๑) ❤