「LNMP」Let's Encrypt 配置

96
作者 夕立空
2016.05.15 14:52* 字数 652

新版说明

安装方法

如果是CentOS 6,先执行:yum install epel-release
cd /root/ 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

    问题解决:

  3. 编译错误、创建虚拟环境失败
    解决:简单粗暴卸载python相关所有软件,并且重新安装SS之后就好了。但是,为毛……
  4. 只允许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;
    [....]
    }
  5. 国内DNS不支持
    解决:切换到国外
「LANMP笔记」