阅读

免费ssl证书生成及续订

software  2024-04-22 09:24

参考acme.sh


1、安装 acme.sh,同时定时任务将自动添加一条任务

# 安装路径:~/.acme.sh/;注意修改邮箱
$ curl https://get.acme.sh | sh -s email=my@mydomain.com

2、验证域名

# 通过网站根目录,域名需要能被访问,根目录需要可写权限
$ ~/.acme.sh/acme.sh --issue -d mydomain.com -w /var/www/html

# 通过 Nginx,域名需要能被访问
$ ~/.acme.sh/acme.sh --issue -d mydomain.com --nginx

# 通过DNS
## 先执行 --issue,根据提示通过 云解析DNS 添加 TXT 解析记录
$ ~/.acme.sh/acme.sh --issue --dns -d *.mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

## 再次执行 --renew
$ ~/.acme.sh/acme.sh --renew -d *.mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
# acme.sh 默认证书服务为 zerossl ,可通过 --server 参数修改
$ ~/.acme.sh/acme.sh --issue .... --server zerossl
# 或者
$ ~/.acme.sh/acme.sh --issue .... --server https://acme.zerossl.com/v2/DV90

# 或设置默认服务,设置后不带 --server 参数也将使用 letsencrypt 服务
$ ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
Short NameACME server URLUsage Wiki
zerosslhttps://acme.zerossl.com/v2/DV90ZeroSSL.com CA
letsencrypthttps://acme-v02.api.letsencrypt.org/directoryN/A
buypasshttps://api.buypass.com/acme/directoryBuyPass.com CA
sslcom

https://acme.ssl.com/sslcom-dv-rsa

https://acme.ssl.com/sslcom-dv-ecc

SSL.com CA
googlehttps://dv.acme-v02.api.pki.goog/directoryGoogle Public CA

3、将生成的证书文件移动到 nginx 或 apache 证书目录

# 使用安装命令将证书文件复制到对应的证书目录
## nginx
~/.acme.sh/acme.sh --install-cert -d *.mydomain.com \
--key-file       /etc/nginx/certs.d/mydomain.com.key \
--fullchain-file /etc/nginx/certs.d/mydomain.com.pem \
--reloadcmd     "nginx -s reload"

## apache
~/.acme.sh/acme.sh --install-cert -d *.mydomain.com \
--cert-file      /etc/apache/certs.d/cert.pem \
--key-file       /etc/apache/certs.d/key.pem \
--fullchain-file /etc/apache/certs.d/fullchain.pem \
--reloadcmd     "service apache2 force-reload"

4、配置证书

# 配置 ssl,以 nginx 为例,注意 ssl_certificate 使用的是 fullchain-file 对应文件
server {
    listen       443 ssl;
    ssl_certificate /etc/nginx/certs.d/mydomain.com.pem;
    ssl_certificate_key /etc/nginx/certs.d/mydomain.com.key;
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;

    # ...
}

5、证书续期,安装时已在系统中加入定时任务,每60天自动续订

# 旧的证书文件将直接被覆盖
$ ~/.acme.sh/acme.sh --renew -d mydomain.com

6、停止证书续期

# 该操作不会删除证书文件目录(~/.acme.sh/mydomain.com)
$ ~/.acme.sh/acme.sh --remove -d mydomain.com