Let's Encrypt 是世界最知名的免费HTTPS证书颁发机构,我们可以通过开源的 acme.sh 来申请Let's Encrypt的免费HTTPS证书,并且实现HTTPS证书的自动化更新和部署。
一、什么是 Let's Encrypt
Let's Encrypt 是一个免费、自动化和开放的证书颁发机构(CA)。它的目标是为了普及网站的HTTPS加密,使得互联网更加安全。
- 免费:Let's Encrypt 提供的HTTPS证书完全免费,降低了网站所有者采用HTTPS的成本门槛。
- 开放:Let's Encrypt 的代码是开源的,任何人都可以审查其安全性和可靠性。
- 自动化:通过自动化的流程,可以快速为网站颁发证书,减少了人工干预和繁琐的手续。
二、什么是 acme.sh
acme.sh 是一个纯Shell脚本实现的开源ACME协议客户端,可以用于从 Let's Encrypt、ZeroSSL 等支持ACME协议的证书颁发机构获取免费的HTTPS证书。
- 跨平台:可以在 Linux、macOS、Windows 等多种操作系统上运行。
- 易于使用:通过简单的命令行操作即可完成证书的申请、安装和更新等任务。
- 灵活:支持多种验证方式,如HTTP验证、DNS验证等,可以适应不同的网络环境和服务器配置。
三、使用 acme.sh 申请Let's Encrypt免费证书
1.安装 acme.sh
- 在 Linux 或 macOS 上,可以使用以下命令安装:
curl https://get.acme.sh | sh
- 在 Windows 上,可以使用 PowerShell 安装:
iwr https://get.acme.sh | iex
2.生成证书
可以通过以下两种域名所有权验证方式申请证书:
- HTTP 验证(Webroot 方式): 确保你的域名已经解析到正确的服务器 IP 地址。 使用以下命令生成证书,以example.com为例:
~/.acme.sh/acme.sh --issue -d example.com --webroot /var/www/html/
这里的/var/www/html/是你的网站根目录,acme.sh 会在这个目录下创建一个.well-known/acme-challenge/目录,并放置一个验证文件用于证明你对该域名的所有权。
- DNS 验证: 如果你的服务器不便于使用 HTTP 验证,或者你希望更灵活的验证方式,可以使用 DNS 验证。不同的 DNS 提供商有不同的配置方法,以阿里云 DNS 为例:
~/.acme.sh/acme.sh --issue -d example.com --dns dns_ali
需要根据你的 DNS 提供商设置相应的参数,并确保你的 DNS 记录正确配置以完成验证。
3.安装证书
生成证书后,可以使用以下命令安装证书到特定的 Web 服务器(以 Nginx 为例):
~/.acme.sh/acme.sh --install-cert -d example.com \
--key-file /path/to/nginx/key.pem \
--fullchain-file /path/to/nginx/cert.pem
这里需要将/path/to/nginx/替换为实际的 Nginx 配置文件目录。
4.自动更新证书
acme.sh 会自动尝试更新证书,你也可以手动触发更新:
~/.acme.sh/acme.sh --renew -d example.com
通过以上步骤,就可以使用 acme.sh 从 Let's Encrypt 申请免费的 SSL/TLS 证书,并在你的服务器上配置 HTTPS 加密。
OHTTPS: 免费HTTPS证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证等)申请免费的HTTPS证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书自动化部署至阿里云、腾讯云、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等。