目前 HTTP2.0 作为新一代的 WEB 协议已经日渐取代使用明文传输的 HTTP 协议,以保障站点数据安全并提高 WEB 服务体验。浏览器要求必须启用 HTTPS 才可以接入 HTTP2,故而我们想要体验 HTTP2 须要有一张 SSL 证书。以下是我对使用 ACME 脚本申请证书并自动续期详细步骤的记录。
- 安装 ACME 脚本,并更换默认证书。
|
|
- 域名验证 如果没有公网 IP,可使用 DNS 验证,具体步骤遵循各域名服务商指导。该方式可以申请多域名、泛域名证书,达到很多域名可以共用一张证书的目的,但无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
如果有一台有公网 IP 的服务器即可通过下列方式进行验证,下面以 jike.dev 为例进行验证,实际使用中需要把 jike.dev 更换为你的域名和网站服务目录。
|
|
- 安装证书到指定文件夹
为了保证证书后期的自动更新,不要直接使用或拷贝默认生成的证书,而要使用
acme.sh --install-cert
命令指定目标位置。下面以 jike.dev 为例进行安装,实际使用中需要把 jike.dev 更换为你的域名和网站服务目录。
|
|
- 更新证书
目前证书无需任何操作会在 60 天以后自动更新,若想要停止某域名证书的自动更新使用
acme.sh --remove -d jike.dev
命令,或者在安装目录中删除对应域名目录即可。
目前 ACME 脚本应该会在一个月后自动更新证书,如果未能自动更新,我在这里提供一个排查思路。
运行 acme.sh --renew -d jike.dev --force
强制更新域名证书,如果更新失败并返回 Invalid status, ···/well-known/acme-challenge/··· was rejected. Our fetch received an HTTP status code of 404.
可以检查一下 Nginx 是否将所有 80 端口访问全部重定向至 443。
如果全部重定向至 443,需要保留 /.well-known/acme-challenge/
这个路径的 80 端口访问。