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;
}
}