申请网址:https://freessl.org/
1. 安装 acme.sh
安装很简单, 一个命令:
curl https://get.acme.sh | sh -s email=my@example.com
普通用户和 root 用户都可以安装使用. 安装过程进行了以下几步:
把 acme.sh 安装到你的 home 目录下:
~/.acme.sh/
并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
更高级的安装选项请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-install
安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/
中国大陆用户请参考:
https://github.com/acmesh-official/acme.sh/wiki/Install-in-China
以上链接说明内容如下:
如果你的安装服务器位于中国大陆境内, 访问 github 可能会不成功. 所以安装可能会失败.
推荐从这里下载安装:
#centos7.9系统,实操时报错:No such file or directory
https://gitee.com/neilpang/acme.sh
#从原仓库复制了一个20240120
https://e.coding.net/youxianbo/tools/acme.sh.git
安装步骤:
根据 How-to-install#3-or-git-clone-and-install
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m my@example.com
在freessl.cn注册账号,然后使用这个平台的 ACME 自动化 服务
https://freessl.cn/acme-deploy
ACME 域名管理里面添加域名、并验证后,就可以申请证书了
验证域名如果选用Http-proxy的话,安照提示需要在网站上配置一下代理(xxxx替换)
location ^~ /.well-known/acme-challenge/ {
proxy_pass https://acme-http-proxy.certcloud.cn/http-challenge/xxxx/;
}
然后在安装好acme的服务器执行证书申请命令,例如(xxxx替换):
#单域名证书
acme.sh --issue -d www.xxxx.com --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/xxxx
#多域名证书(一个证书可以同时支持多个域名使用)
acme.sh --issue -d www.xxx.com -d www.xxx.com -d www.xxx.com --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/xxxx
copy/安装 证书
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
Apache example:
acme.sh --install-cert -d example.com \
--cert-file /path/to/certfile/in/apache/cert.pem \
--key-file /path/to/keyfile/in/apache/key.pem \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd "service apache2 force-reload"
Nginx example:
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"
(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)
Chain issues Incomplete 错误的解决办法
Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。
--install-cert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.
详细参数请参考: https://github.com/Neilpang/acme.sh#3-install-the-issued-cert-to-apachenginx-etc
值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.
检测网站证书
https://www.ssllabs.com/ssltest/index.html
https://myssl.com/dns_check.html#ssl_verify
更多证书相关工具
https://freessl.cn/ssltools