acme部署https证书

介绍

这里介绍 Let’s Encrypt 机构颁发的证书。

相关资料

Let’s Encrypt 官网:https://letsencrypt.org/zh-cn/getting-started/

acme.sh 教程:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

安装 acme.sh

curl  https://get.acme.sh | sh

上述命行执行结束后,会在 ~/.acme.sh/ 中生成相关的文件,并且会在 crontab 中自动添加一条每天凌晨执行的定时任务。

生成证书

语法:

acme.sh  --issue  -d 域名1 -d 域名2  --webroot  网站根目录

示例:

acme.sh  --issue  -d blog.zhangjianqiang.top  --webroot  /path/to/blog/

如果提示有错误,可以在命令后添加 --debug 来打印出详情的错信息

如果提示 curl 错误,可以在命令行后添加 --use-wget ,使用 wget 取代 curl 来下载文件

安装/复制证书

上述命令执行结束后,会在 ~/.acme.sh 目录下有一个与域名对应的文件夹,这里就是生成的相关证书文件,这个目录我们不便于直接使用最好把这些文件复制到 nginx 配制目录下(如果是别的服务器,复制到相应配置目录)

nginx 示例:

我自己平时用的都是 nginx 服务器,因此这里只展示一下 nginx 的相关操作,如果有用 apache 服务器或其它的,请参考上面的文档地址进行相关操作

acme.sh --installcert -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,后来我又重启了 nginx 也不太确定 service nginx reload 是否会刷新配置文件,如果你做完这些发现没有生效,那么请 重启 nginx

更新证书

在安装证书步骤已经自动为我们添加一条 crontab 计划任务,证书快到期时会为我们自动执行更新

nginx 配置

server
    {
        # 注意这里要这样写,我一开始写的 ssl on; 报错
        listen 443 ssl;
        server_name blog.zhangjianqaing.top ;
        # 开始证书的相关配置
        ssl_certificate /usr/local/nginx/conf/cert/blog.zhangjianqiang.top/cert.pem;
        ssl_certificate_key /usr/local/nginx/conf/cert/blog.zhangjianqiang.top/key.pem;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        # 结束正常的相关配置
        # 下面放自己的其它配置 
    }

acme.sh 更新

升级 acme.sh 到最新版 :

acme.sh --upgrade

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

acme.sh  --upgrade  --auto-upgrade

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

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

acme.sh --upgrade  --auto-upgrade  0
发布了48 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37825371/article/details/104824498