acme.sh 申请 ssl 证书 体验云端的感觉

本贴最后更新于 1709 天前,其中的信息可能已经时异事殊

1.环境准备

Centos6.9

Tomcat+nginx

Acme.sh

2.安装 acme.sh

下载工具

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

执行下面的命令让 acme 全局生效

source ~/.bashrc

3.签发证书

生成证书

 acme.sh --issue -d wx.123.com  -w  /usr/share/nginx/html --force

删掉证书

rm -rf /root/.acme.sh/wx.123.com/

查看列表

acme.sh list  

Main\_Domain    KeyLength  SAN\_Domains  Created                       Renew

wx.ihodoo.com  ""         no           Tue Oct  9 05:05:10 UTC 2018  Sat Dec  8 05:05:10 UTC 2018

4.应用证书

新建证书文件夹

mkdir -p /etc/nginx/ssl

acme.sh --install-cert -d wx.123.com --key-file /etc/nginx/ssl/wx.123.com.key  --fullchain-file /etc/nginx/ssl/wx.123.com.crt --reloadcmd"service nginx force-reload"

加强安全级别

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

5.修改 nginx 配置

修改配置文件

vi /etc/nginx/conf.d/123.conf

 ssl_dhparam /etc/nginx/ssl/dhparam.pem;

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

 ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-EC

 DSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-    GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-      SHA:AES2

  56-SHA:DES-CBC3-SHA:!DSS';

  ssl_prefer_server_ciphers on;

  ssl_session_cache shared:SSL:50m;

  ssl_session_timeout 1d;

此处是证书文件

  ssl\_certificate /etc/nginx/ssl/wx.123.com.crt;

  ssl\_certificate\_key /etc/nginx/ssl/wx.123.com.key;

开启 HSTS Preload 支持

    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

    add_header X-Frame-Options SAMEORIGIN;

    add_header X-Content-Type-Options nosniff;

    add_header X-XSS-Protection "1; mode=block";

6.测试 nginx 重启

nginx -t

Nginx -s reload

7.自动更新证书

手动更新命令

 acme.sh --cron -f

自动更新这边不知道为啥 acme 自己添加进去了

还有个方式是手动添加

8.其他说明

Let's Encrypt 的证书有效期是 90 天的,你需要定期 renew 重新申请,这部分 acme.sh 以及帮你做了,在安装的时候往 crontab 增加了一行每天执行的命令 acme.sh --cron:

$ crontab -l

0 0 \* \* \* "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

PS: 下面这段你可以尝试执行一下,看看是否正确

"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh"

这样就是正常的:

[Fri Dec 23 11:50:30 CST 2016\] Renew: 'wx.123.com'

[Fri Dec 23 11:50:30 CST 2016\] Skip, Next renewal time is: Tue Feb 21 03:20:54 UTC 2017

[Fri Dec 23 11:50:30 CST 2016\] Add '--force' to force to renew.

[Fri Dec 23 11:50:30 CST 2016\] Skipped wx.123.com

acme.sh --cron 命令执行以后将会 申请新的证书 并放到相同的文件路径。由于前面执行 --installcert 的时候告知了重新 Nginx 的方法,acme.sh 也同时会在证书更新以后重启 Nginx。

9.遇到的问题

acme.sh SSL: error:0906D06C:PEM routines:PEM\_read\_bio:no start line:Expecting: ANY PRIVATE KE Y error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib

看到上面的报错说明最开的生成证书有问题 需要把证书删掉重新生成

打赏 27 积分后可见
27 积分 • 1 打赏
  • HTTPS
    98 引用 • 271 回帖 • 3 关注
  • acme.sh

    acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

    主要步骤:

    安装 acme.sh
    生成证书
    copy 证书到 nginx/apache 或者其他服务
    更新证书
    更新 acme.sh
    出错怎么办, 如何调试

    2 引用 • 3 回帖
1 操作
yuanhenglizhen 在 2019-08-15 09:05:45 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...