使用 acme 脚本给项目添加 https 证书排查错误一例

使用 acme 脚本给项目添加 https 证书排查错误一例

step 1:首先是安装

先放官网文档:
github.com/acmesh-official/acme.sh...
上面是中文概况说明

github.com/acmesh-official/acme.sh...
上面是最重要的签发证书说明。

可能会需要科学上网,总之得到 master.tar.gz 这个文件,从github 的 acme 项目获得,解包是个文件夹,叫做 acme.sh-master。
另外,有两种方法 http 和 dns ,本文采用 http 方式
建议使用 root 用户。
进入这个文件夹,安装,命令是

cd acme.sh-master
./acme.sh --install
或者
./acme.sh --install -m  my@example.com

要点是,那个邮箱得真的是你自己的邮箱。

step 2:设置环境

如下命令

cd 
source .bashrc

其实意思就是让安装的别名立刻生效。

step 3:签发证书,也是最重要的步骤

如果安装时没有指定邮箱,这里必须指定,也是我出错的地方,特此记录一下。
先确保 nginx 是启动状态,项目可访问
假设域名是 xxx.xxx.com
nginx 的 这个项目的单独的虚拟主机配置文件 /etc/nginx/conf.d/xxx.xxx.com.conf,官网说,也可以写总配置。

acme.sh  --issue --accountemail "我的邮箱@xxx.com"  -d xxx.xxx.com   --nginx /etc/nginx/conf.d/xxx.xxx.com.conf

注意屏幕提示,快几秒,慢要好几分钟,看人品。
因为这是发起一个远程请求,请求证书。
看到如下提示说明成功

[Thu Dec 23 01:14:16 CST 2021] Your cert is in: /root/.acme.sh/xxx.xxx.com/amxxx.xxx.com.cer
[Thu Dec 23 01:14:16 CST 2021] Your cert key is in: /root/.acme.sh/xxx.xxx.com/amxxx.xxx.com.key
[Thu Dec 23 01:14:17 CST 2021] The intermediate CA cert is in: /root/.acme.sh/xxx.xxx.com/ca.cer
[Thu Dec 23 01:14:17 CST 2021] And the full chain certs is there: /root/.acme.sh/xxx.xxx.com/fullchain.cer

step 4:复制证书到自己指定目录

mkdir -p /etc/nginx/pem/xxx.xxx.com/
chown -R  nginx:nginx /etc/nginx/pem

acme.sh --install-cert -d xxx.xxx.com --key-file /etc/nginx/pem/xxx.xxx.com/key.pem --fullchain-file /etc/nginx/pem/xxx.xxx.com/cert.pem  --reloadcmd "systemctl restart nginx"

step 5: 修改 nginx 配置并重启

 listen 80;
 listen 443 ssl http2;
 server_name xxx.xxx.com;
 index index.php index.html ;
 root /www/wwwroot/xxx/public;

 ssl_certificate   /etc/nginx/pem/xxx.xxx.com/cert.pem;
 ssl_certificate_key  /etc/nginx/pem/xxx.xxx.com/key.pem;
 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
 ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 ssl_prefer_server_ciphers on;
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 10m;
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1
yangweijie

之前给java 域名代理端口配 一直不行 原因没有配静态目录,后来统一指向一个前端项目。他验证时会去那个目录写文件的。

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!