Acme-https证书申请

时间:2021-01-19
本文章向大家介绍Acme-https证书申请,主要包括Acme-https证书申请使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Linux下使用acme.sh 配置https 免费证书

简单来说acme.sh 实现了 acme 协议, 可以从 let‘s encrypt 生成免费的证书。
acme.sh 有以下特点:
一个纯粹用Shell(Unix shell)语言编写的ACME协议客户端。
完整的ACME协议实施。 支持ACME v1和ACME v2 支持ACME v2通配符证书
简单,功能强大且易于使用。你只需要3分钟就可以学习它。
Let's Encrypt免费证书客户端最简单的shell脚本。
纯粹用Shell编写,不依赖于python或官方的Let's Encrypt客户端。
只需一个脚本即可自动颁发,续订和安装证书。 不需要root/sudoer访问权限。
支持在Docker内使用,支持IPv6

Github链接:https://github.com/acmesh-official/acme.sh

本文记录了我在把网站从HTTP升级到 HTTPS ,申请和安装SSL证书路上踩过的几个坑。

安装环境:
操作系统:centos 7 X64
SSL证书来源:Let's Encrypt
安装用脚本:acme.sh
服务器:nginx
域名:*.7dianchina.com

1、安装acme.sh

# yum -y isntall curl
# curl  https://get.acme.sh | sh
会有红色的提示
[Wed Apr 29 14:07:14 CST 2020] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7
[Wed Apr 29 14:07:14 CST 2020] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7

检查是否安装好

#直接运行
acme.sh
#如报错请运行如下
source ~/.bashrc

安装完成后的工作目录在当前用户的.acme.sh【~/.acme.sh】

2、安装后的配置

把 acme.sh 安装到你的 home 目录下:~/.acme.sh/并创建 一个 bash 的 alias, 方便你的使用:

alias acme.sh=~/.acme.sh/acme.sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profile

安装过程中会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书(可执行crontab -l 查看)。

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

3、获取阿里云的ID和Secret

获取Ali_Key 和 Ali_Secret的地址

# 替换成从阿里云后台获取的密钥
export Ali_Key="LTAI4G6QiGt5SCkfPp8dZVzS"
export Ali_Secret="8GaI2rZ9E0ZFGQVySzgzfwmhTyb732"

# 添加完成后
~/.acme.sh/account.conf能看到阿里的ID和Secret

其他地方注册的请参考这里

4、生成证书

# 换成自己的域名
acme.sh --issue --dns dns_ali -d goodwell00.com -d *.goodwell00.com

[Mon Apr 30 15:35:14 CST 2018] Your cert is in  /root/.acme.sh/xxx.com/xxx.com.cer
[Mon Apr 30 15:35:14 CST 2018] Your cert key is in  /root/.acme.sh/xxx.com/xxx.com.key
[Mon Apr 30 15:35:14 CST 2018] The intermediate CA cert is in  /root/.acme.sh/xxx.com/ca.cer
[Mon Apr 30 15:35:14 CST 2018] And the full chain certs is there:  /root/.acme.sh/xxx.com/fullchain.cer

申请的证书会放到 ~/.acme.sh/ 目录里面,所有的 acme.sh 配置都记录在 ~/.acme.sh/ 目录里面,acme.sh 有自动的配置读取,并按域名划分,下次你再次执行的时候,它知道你之前是用的那个目录,只需要告诉它域名就好了。

5、安装证书

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

正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,

默认情况下,证书将每60天更新一次(可配置)。更新证书后,将通过以下命令自动重新加载Apache / Nginx服务:service apache2 force-reloadservice nginx force-reload

请注意:reloadcmd非常重要。证书可以自动续订,但是,如果没有正确的“reloadcmd”,证书可能无法刷新到您的服务器(如nginx或apache),那么您的网站将无法在60天内显示续订证书。

acme.sh --install-cert -d goodwell00.com \
--key-file /usr/local/nginx/conf/ssl/goodwell/goodwell00.com.key \
--fullchain-file /usr/local/nginx/conf/ssl/goodwell/goodwell00.com.cer \
--reloadcmd "/usr/local/nginx/sbin/nginx -s reload"

[Mon Apr 30 16:19:32 CST 2018] Reload success

指定了存放证书的目录,nginx配置文件会配置我这里是创建了一个key文件

6、配置nginx

server {
    listen 80;
    listen 443 ssl;

    server_name h5.7dianchina.com;
    access_log  /var/log/nginx/qidian_h5.log;

    ssl on;
    ssl_certificate key/7dianchina.com.cer;
    ssl_certificate_key key/7dianchina.com.key;
    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;

参考:https://www.jianshu.com/p/b6b172f69c14

https://www.jianshu.com/p/06e3aba8c62e

https://www.derror.com/p/configure-https-for-nginx-using-acmesh/

https://my.oschina.net/kimver/blog/1634575

时间到期续费证书

acme.sh --renew -d baoko.cn --webroot /www/nginx/key/

openssl x509 -in signed.crt -noout -dates

原文地址:https://www.cnblogs.com/wuxingwang/p/14297730.html