×

「LNMP」Let's Encrypt 配置

96
夕立空
2016.05.15 14:52* 字数 268

新版说明

安装方法

如果是CentOS 6,先执行:yum install epel-release

wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n```
接下来就会自动安装所需的依赖包。
##生成证书
单域名生成证书:
`./certbot-auto certonly --email username@domain --agree-tos --webroot -w /websiteroot -d domain`
多域名单目录生成单证书:
`./certbot-auto certonly --email username@domain --agree-tos --webroot -w /websiteroot -d domain1 -d domain2`
多域名多目录生成多个证书:
`./certbot-auto certonly --email admin@vpser.net --agree-tos --webroot -w /websiteroot1 -d domain1 -d domain2 -w /websiteroot2 -d domain3 -d domain4`

##证书更新
进入Let's Encrypt目录,执行`./certbot-auto renew`即可,建议添加Cron。

#旧版说明
##下载Let's Encrypt
首先把Let's Encrypt给git下来

git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt

无git时

wget -c https://github.com/letsencrypt/letsencrypt/archive/master.zip && unzip master.zip && cd letsencrypt-master

##创建临时文件夹

mkdir -p /home/wwwroot/域名/.well-known/acme-challenge

##生成证书

./letsencrypt-auto certonly --email 邮箱 -d 域名 --webroot -w /网站目录完整路径 --agree-tos

##更新证书

cat >/root/renew-ssl.sh<<EOF

!/bin/bash

mkdir -p /网站目录完整路径/.well-known/acme-challenge
/root/letsencrypt/letsencrypt-auto --renew-by-default certonly --email 邮箱 -d 域名 --webroot -w /网站目录完整路径 --agree-tos
/etc/init.d/nginx reload
EOF
chmod +x /root/renew-ssl.sh

注意要修改上面letsencrypt-auto的路径为你自己的,并且里面的邮箱和域名也要修改。
再crontab里添加上:0 3 */60 * * /root/renew-ssl.sh

#HTTPS配置
##Nginx新增部分

listen 443 ssl;
server_name my_server_name;
ssl_certificate /etc/letsencrypt/live/server_name/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/server_name/privkey.pem;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;


##Apache新增部分

<VirtualHost *:443>
DocumentRoot index_Root //网站目录
ServerName ServerName:443 //域名
ServerAdmin Email //邮箱
SSLEngine onSSLCertificateFile /etc/letsencrypt/live/ServerName/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ServerName/privkey.pem
<Directory "index_Root"> //网站目录
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>


#注:
1. 新增部分中,ServerName及相关路径根据个人情况修改;
2. 本文非原创,来自
    http://www.vpser.net/build/letsencrypt-free-ssl.html
    http://www.vpser.net/build/letsencrypt-certbot.html
#问题解决:
1. 编译错误、创建虚拟环境失败
解决:简单粗暴卸载python相关所有软件,并且重新安装SS之后就好了。但是,为毛……
2. 只允许HTTPS访问

server {
listen 80;
server_name my.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name my.domain.com;
[....]
}

3. 国内DNS不支持
解决:切换到国外
「LANMP笔记」
Web note ad 1