生成免费的证书.acme 基于nginx

官方文档设计 多种

一、安装acme,可能一次安装不成功,要多安装几次

1、curl https://get.acme.sh | sh -s email=my@example.com

二、生成证书 用于nginx

你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证

acme.sh --issue  -d mydomain.com   --nginx   #-d 后面的域名写自己nginx配置域名

注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏, 也有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧

可以看见秘钥文件已经生成

三、copy/安装 证书

前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.

注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.

正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如 以下 域名写自己的,文件路径自定义

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"

四、修改nginx配置

nginx添加ssl配置后,刷新nginx -s reload

server{
        
        listen 443 ssl;
        server_name     ; #用户服务器的域名
        ssl_certificate /path/to/fullchain/nginx/cert.pem;
        ssl_certificate_key     /path/to/keyfile/in/nginx/key.pem;
        ssl_session_timeout     5m;
        ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers             ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers       on;
}

五、更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步

升级 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh  --upgrade  --auto-upgrade

之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

acme.sh --upgrade  --auto-upgrade  0

六、如果出错了

如果出错, 请添加 debug log:

acme.sh  --issue  .....  --debug

或者:

acme.sh  --issue  .....  --debug  2
经验分享 程序员 微信小程序 职场和发展