准备
域名(自备)
acme.sh
acme.sh
是一个自动申请 https 证书的脚本,使用方便,功能也非常强大。
安装:
curl https://get.acme.sh | sh
或者
wget -O - https://get.acme.sh | sh
这样你已经把 acme.sh 这个小工具安装到你本地的 ~/.acme.sh/中了,而不会在你系统的其它地方装些乱七八糟的东西。
常规路线
一些 DNS 服务商,没有提供 API 操作 DNS 的接口,所以整合不进这个工具里。当然我们也还是可以申请证书。
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
常规路线
- 通过服务器验证,请查网上资料,优点是可以自动更新证书,缺点是需要使用原域名的80端口进行验证,如果域名已经被墙,则无法使用该方法。
- 不需要服务器,不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次三个月证书过期后,都需要手动再次重新解析验证域名所有权。
本文介绍第二种方法
- 申请证书
acme.sh --issue --dns -d [域名] --yes-I-know-dns-manual-mode-enough-go-ahead-please
[域名]需替换成实际域名
参数解释:
acme.sh
:表示使用你刚安装好的acme.sh
–issue
:申请证书
–dns
:使用 DNS 的方式来验证你的所有权,你需要在域名上添加一条 txt 解析记录, 验证域名所有权。
-d [域名]
:-d表示 domain,后面跟你要申请域名。
–yes-I-know-dns-manual-mode-enough-go-ahead-please
:官方不推荐使用此方式来生成证书,所以有这个额外的参数来提醒你你在做什么。
添加 txt 记录
加好记录后,重新申请证书
acme.sh --issue --dns -d [域名] --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew
- 应用到 nginx
修改你 nginx 的配置,配置 https
server { listen 443 ssl; # 有了 https 可以尝试开启 http2,加速你的网站 # http2 需要你 nginx 加载了 http2 模块,用如下配置开启。 # listen 443 ssl http2; server_name aiwdh.cn; ssl_certificate /root/.acme.sh/[域名]/fullchain.cer; ssl_certificate_key /root/.acme.sh/[域名]/[域名].key; # charset koi8-r; access_log /var/log/nginx/host.access.log main; # 下面写你之前的配置 }