acme申请ssl证书

# 安装 Acme 脚本
curl https://get.acme.sh | sh

# 如果下载失败
#curl: (35) TCP connection reset by peer

# 去能下载的主机复制过来
cat >> ~/.bashrc <<EOF
. "/root/.acme.sh/acme.sh.env"
EOF
. ~/.bashrc

# 设置为自动更新
acme.sh  --upgrade  --auto-upgrade

# 安装 Acme 脚本之后,请先执行下面的命令(下面的邮箱为你的邮箱)
~/.acme.sh/acme.sh --register-account -m xxx@qq.com

[root@yang ~]# ~/.acme.sh/acme.sh --register-account -m xxx@qq.com


# 80 端口空闲的验证申请
# 如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 Acme.sh 还能假装自己是一个 WebServer, 临时监听在 80 端口, 完成验证
#~/.acme.sh/acme.sh --issue -d *.xxx.com --standalone


# Nginx 的方式验证申请
# 这种方式需要你的服务器上面已经部署了 Nginx 环境,并且保证你申请的域名已经在 Nginx 进行了 conf 部署。(被申请的域名可以正常被打开)

# 貌似不能使用通配符的形式
~/.acme.sh/acme.sh --issue  -d *.xxx.com   --nginx

[root@yang ~]# ~/.acme.sh/acme.sh --issue  -d *.xxx.com   --nginx
[2021年 10月 13日 星期三 16:04:59 CST] Using CA: https://acme.zerossl.com/v2/DV90
[2021年 10月 13日 星期三 16:04:59 CST] Creating domain key
[2021年 10月 13日 星期三 16:04:59 CST] The domain key is here: /root/.acme.sh/*.xxx.com/*.xxx.com.key
[2021年 10月 13日 星期三 16:04:59 CST] Single domain='*.xxx.com'
[2021年 10月 13日 星期三 16:04:59 CST] Getting domain auth token for each domain
[2021年 10月 13日 星期三 16:05:05 CST] Getting webroot for domain='*.xxx.com'
[2021年 10月 13日 星期三 16:05:05 CST] Error, can not get domain token entry *.xxx.com for http-01
[2021年 10月 13日 星期三 16:05:05 CST] The supported validation types are: dns-01 , but you specified: http-01
[2021年 10月 13日 星期三 16:05:05 CST] Please add '--debug' or '--log' to check more details.
[2021年 10月 13日 星期三 16:05:05 CST] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh

[root@yang ~]# ll /root/.acme.sh/*.xxx.com/
总用量 20
drwxr-xr-x 2 root root 4096 10月 13 16:07 backup
-rw-r--r-- 1 root root  380 10月 13 16:07 *.xxx.com.conf
-rw-r--r-- 1 root root  956 10月 13 16:04 *.xxx.com.csr
-rw-r--r-- 1 root root  148 10月 13 16:04 *.xxx.com.csr.conf
-rw-r--r-- 1 root root 1679 10月 13 16:04 *.xxx.com.key


# 安装证书到指定文件夹
# 注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的证书文件。
# 正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,比如下面的代码
~/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /root/private.key --fullchain-file /root/cert.crt


~/.acme.sh/acme.sh --installcert -d *.xxx.com --key-file /root/private.key --fullchain-file /root/cert.crt
#上面的 /root/private.key 以及 /root/cert.crt 是把密钥和证书安装到 /root 目录,并改名为 private.key 和 cert.crt

cat: /root/.acme.sh/*.xxx.com/fullchain.cer: 没有那个文件或目录


#=================
# 再来一次
# 上一次找不到nginx的conf配置文件

~/.acme.sh/acme.sh --issue  -d cd.xxx.com   --nginx

# 这次ok
[2021年 10月 13日 星期三 16:44:36 CST] Your cert is in: /root/.acme.sh/cd.xxx.com/cd.xxx.com.cer
[2021年 10月 13日 星期三 16:44:36 CST] Your cert key is in: /root/.acme.sh/cd.xxx.com/cd.xxx.com.key
[2021年 10月 13日 星期三 16:44:36 CST] The intermediate CA cert is in: /root/.acme.sh/cd.xxx.com/ca.cer
[2021年 10月 13日 星期三 16:44:36 CST] And the full chain certs is there: /root/.acme.sh/cd.xxx.com/fullchain.cer


~/.acme.sh/acme.sh --installcert -d cd.xxx.com --key-file /root/private.key --fullchain-file /root/cert.crt

[root@k8s-master ~]# ~/.acme.sh/acme.sh --installcert -d cd.xxx.com --key-file /root/private.key --fullchain-file /root/cert.crt
[2021年 10月 13日 星期三 16:45:20 CST] Installing key to: /root/private.key
[2021年 10月 13日 星期三 16:45:20 CST] Installing full chain to: /root/cert.crt


mkdir -p /usr/local/nginx/cert/

mv /root/private.key /usr/local/nginx/cert/cd.xxx.com.private.key
mv /root/cert.crt /usr/local/nginx/cert/cd.xxx.com.cert.crt
  
server {
        listen 443 ssl;
        server_name cd.xxx.com;
        #return 301 http://cd.xxx.com;
        #rewrite ^(.*)$ http://cd.xxx.com;
        ssl_certificate   /usr/local/nginx/cert/cd.xxx.com.cert.crt;
        ssl_certificate_key  /usr/local/nginx/cert/cd.xxx.com.private.key;
        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;

        location / {
                include /etc/nginx/proxy2.conf;
                proxy_pass http://zentao;
        }
}