acme 快速生成证书且部署nginx (文件验证)

acme 有两种方式验证域名发布ssl证书,dns和文件校验

本文使用比较方便的文件验证方式,需要nginx 配置了servername 或者其他方式,端口需要开放全球80,会在默认网页路径生成txt文件,校验网址的url,例http://baidu.com/ssl/qwertyy

更多信息可以参考
https://github.com/acmesh-official/acme.sh
https://github.com/acmesh-official/acme.sh/wiki/说明

三种方式安装 acme脚本

git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install
# 或者
curl https://get.acme.sh | sh
# 或者
wget -O -  https://get.acme.sh | sh

nginx conf模板

server {
        listen  80 default_server;
        root /usr/local/nginx/html;
        location / {
                return 404;
        }
        location ^~ /.well-known/acme-challenge/ {
                default_type "text/plain";

        }

        location = /.well-known/acme-challenge/ {
                return 404;
        }

快捷生成脚本和nginx配置文件的脚本,
需要先配置好demo.com.conf.b 模板,根据实际需求来配置

#!/bin/bash
# 脚本可命名为 update_ssl.sh
if [ -z "$1" ];then
            exit
fi
# acme.sh 可能需要配置绝对路径
acme.sh --issue -d $1 -d www.$1 -w /usr/local/nginx/html
sed "s/demo.com/$1/g" /usr/local/nginx/conf/conf.d/demo.com.conf.b > /usr/local/nginx/conf/conf.d/$1.conf
/usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

如果你有大量域名需要配置,可以写for循环 去生成配置

for i in `cat domain.txt`
do
update_ssl.sh $i
done

nginx证书配置

server {
        listen 443 ssl;
        server_name baidu.com www.baidu.com;
# 使用 baidu.com.cer 部分浏览器会报错,应使用 fullchain.cer 完整链路ssl证书
        ssl_certificate fullchain.cer;
        ssl_certificate_key baidu.com.key;
        ssl_prefer_server_ciphers on;
        ssl_session_tickets off;

        add_header Strict-Transport-Security "max-age=31536000";
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;
        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_stapling on;
        ssl_stapling_verify on;
        root html;

        location / {
                index index.html;
        }
}
posted @ 2020-12-10 19:13  运维之爪  阅读(2172)  评论(0编辑  收藏  举报