[gophper]给网站加把小绿锁
目前越来越多的网站开始支持https。Lets Encrypt提供免费的ssl证书服务,发现很多同学都在使用。 最近阅读Lets Encrypt花三分钟免费接入ssl证书, 发现已经有同学写了脚本进行证书获取,调用python写的acme_tiny。
配置使用
1.下载脚本和配置文件
默认脚本执行完成后,未重新加载nginx,需要在脚本最后追加重启nginx.
nginx程序在 /opt/nginx/sbin/nginx,网站的根目录 /home/www-root/www.gophper.com/dest
执行命令
mkdir -p /home/www-root/www.gophper.com/ssl
cd /home/www-root/www.gophper.com/ssl
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
chmod +x letsencrypt.sh
echo "/opt/nginx/sbin/nginx -s reload">>letsencrypt.sh
2.修改配置文件(letsencrypt.conf)
DOMAIN_KEY 执行key的名字,一般使用网站名字命名。我使用的是gophper
DOMAIN_DIR 设置网站根目录
DOMAINS 添加访问的域名支持添加多个
# only modify the values, key files will be generated automaticly.
ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="gophper.key"
DOMAIN_DIR="/home/www-root/www.gophper.com/dest"
DOMAINS="DNS:gophper.com,DNS:www.gophper.com"
#ECC=TRUE
#LIGHTTPD=TRUE
3.执行脚本,获取证书及私钥
脚本执行前脚本使用前保证网站根目录能够正常访问。因为需要访问 /.well-known目录进行验证。。。
./letsencrypt.sh letsencrypt.conf
4.添加crontab
Lets Encrypt 支持90天,90天后需要重新申请。配置crontab 每月1号自动申请
0 0 1 * * root /home/www-root/www.gophper.com/ssl/letsencrypt.sh /home/www-root/www.gophper.com/ssl/letsencrypt.conf
####5.脚本执行完,配置nginx(/opt/nginx/vhost/www.gophper.com.conf )
server {
listen 80;
server_name gophper.com www.gophper.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /home/www-root/www.gophper.com/ssl/gophper.chained.crt;
ssl_certificate_key /home/www-root/www.gophper.com/ssl/gophper.key;
server_name gophper.com www.gophper.com;
root /home/www-root/www.gophper.com/dest;
access_log /opt/logs/www.gophper.com/access.log access;
index index.php index.html index.htm;
error_page 404 /archive.html;
location / {
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /share {
autoindex on;
charset utf-8,gbk;
autoindex_exact_size off;
autoindex_localtime on;
}
}
##FAQ
证书重置请求超过次数,一般 3 次,子域名除外。就会出现 Sign failed: “detail”:”Error creating new cert :: Too many certificates already issued for exact set of domains: devhitao.com, 5 天以后才可以再次重置