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;
}
}
不断学习