Let’s Encrypt+Nginx虚拟主机设置

完整配置如下:

server
{
listen 443 ssl; //如果需要spdy也可以加上,lnmp1.2及其后版本都默认支持spdy,lnmp1.3 nginx 1.9.5以上版本默认支持http2
server_name www.xiaokyun.com; //这里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.xiaokyun.com; //网站目录
ssl_certificate /etc/letsencrypt/live/www.xiaokyun.com/fullchain.pem; //前面生成的证书,改一下里面的域名就行,不建议更换路径
ssl_certificate_key /etc/letsencrypt/live/www.xiaokyun.com/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;

include wordpress.conf; //这个是伪静态根据自己的需求改成其他或删除
#error_page 404 /404.html;
location ~ [^/].php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf; //lnmp 1.0及之前版本替换为include fcgi.conf;
#include pathinfo.conf;
}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*.(js|css)?$
{
expires 12h;
}

access_log off;
}

需将上述配置根据自己的实际情况修改后,添加到虚拟主机配置文件最后面。

添加完需要执行:

/etc/init.d/nginx reload

重新载入配置使其生效。

如果需要HSTS,可以加上

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

Let’s Encrypt免费SSL证书续期

1、Let’s Encrypt免费SSL证书有效期是90天,也就是每三个月你就得续期一次。采用官方的方法获取到的免费SSL证书,你不需要更改Apache和Nginx配置代码,执行以下代码即可自动替换证书为新的(注意修改域名和邮箱):

./letsencrypt-auto certonly –renew-by-default –email admin@gmail.com -d xiaokyun.com -d www.xiaokyun.com

2、采用上面脚本快速获取Let’s Encrypt免费SSL证书的,在90天内再次执行命令即可:

./letsencrypt.sh letsencrypt.conf

3、cron 定时任务。每个月自动更新一次证书,可以在脚本最后加入 service nginx reload等重新加载服务。

0 0 1 * * /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1

Let’s Encrypt SSL证书一键脚本

1、利用脚本快速获取Let’s Encrypt SSL证书,调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

项目主页:https://github.com/xdtianyu/scripts/tree/master/lets-encrypt

2、下载到本地:

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

Let’s Encrypt下载脚本

3、配置文件。只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息

ACCOUNT_KEY=”letsencrypt-account.key”
DOMAIN_KEY=”xiaokyun.com.key”
DOMAIN_DIR=”/var/www/xiaokyun.com”
DOMAINS=”DNS:xiaokyun.com,DNS:www.xiaokyun.com”

4、已经绑定域名到 /var/www/www.xiaokyun.com 目录,即通过 http://xiaokyun.com 和 http://www.xiaokyun.com 可以访问到 /var/www/xiaokyun.com目录,用于域名的验证。

Let’s Encrypt安装使用教程

1、Let’s Encrypt官网:

1、官方网站:https://letsencrypt.org/
2、项目主页:https://github.com/letsencrypt/letsencrypt

2、安装Let’s Encrypt脚本依赖环境:(这一部分可以跳过,因为官方提供的Let’s Encrypt脚本会自动检测并安装)

# Debian
apt-get install git

# CentOS 6
yum install centos-release-SCL && yum update
yum install python27
scl enable python27 bash
yum install python27-python-devel python27-python-setuptools python27-python-tools python27-python-virtualenv
yum install augeas-libs dialog gcc libffi-devel openssl-devel python-devel
yum install python-argparse

# CentOS 7
yum install -y git python27
yum install -y augeas-libs dialog gcc libffi-devel openssl-devel python-devel
yum install python-argparse

3、查看自己的VPS主机到底是安装了哪个操作系统版本,可以执行命令:

cat /etc/issue 或者 cat /etc/redhat-release

4、获取Let’s Encrypt免费SSL证书很简单,你只需要执行以下命令,就会自动在你的VPS上生成SSL证书和私钥。

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

执行上述命令后,会弹出对话框,同意用户协议。 接着会提示让你关闭Nginx或者Apache。 Let’s Encrypt需要用到80和443端口,所以你需要关闭那些占用这两个端口的应用。 Let’s Encrypt免费SSL证书获取成功了!

免费COMODO PositiveSSL证书

国外很多家主机提供商 可以免费签发 SSL 的。这里使用的是 UK2,当然你也可以直接去买他家的vps。

进入主题,首先你需要将域名解析到 他家主机的IP段,下面任意IP皆可。

83.170.64.0 – 83.170.127.255
109.123.64.0 – 109.123.127.255
77.92.64.0 – 77.92.95.255

可以使用类似 DNSPOD 只解析国外IP ,这样不影响你网站打开。

解析成功后去下面的网址签发证书,需要注意的是,签发时,会读取你的whois邮箱 并给这个邮箱发送验证信息,所以请确保whois可读,当然也可以使用QQ的免费企业邮箱来接受信息,一般会有 admin@xxx.com 这种邮箱的选项。

免费签发网址1: https://ssl.uk2.net/cgi-bin/certificate-apply.pl
免费签发网址2: https://freessl.80host.com/cgi-bin/certificate-apply.pl

最后叮嘱:请保留好你的Private Key 。