在前几天给网址换成https,在地址栏会看到一把绿色小锁,表示你访问的网站受到安全保护。letsencrypt是的免费的自动化的安全证书,我的博客是用的wordprss和lnmp搭建的。

我们需要https?

相信今年的315晚会,的一个小环节,演示手机app,在公共的wifi那里打开手机APP,相关的购物信息,家庭地址啥时间产生的交易时间,都会给抓取到。这其中的原因是用了公共场所的wifi,但更重要的是因为经过wifi联网的数据是没加密的。再有,在你们浏览器打开百度、京东等网站,右下角弹窗,或者手机浏览器打开在正中间,电信运营商在中间插入他们的代码。https比https多s,用了ssl传输加密协议433端口,保护内容安全完整性。淘宝 百度 谷歌 京东等都启用https,数据安全非常重要。https的站点,搜索引擎权重高点,目前百度联盟不支持https,无法显示广告,站点配置301跳转。通信过程下图

《免费的https证书letsencrypt》

选择letsencrypt证书

首先它是免费的,有效期3个月,其次安装方便只需要几行linux命令就可以,证书自动更新。在我们国内也可以选择沃通,个人的免费证书有效期2年,具体的安装自己去搜索。当然你也可以使用你在生成的证书,缺点就是浏览器会提醒证书不信任,不建议继续访问。letsencrypt证书目前各大浏览器内置信任。作为个人站来说letsencrypt符合你的使用,如果你有钱去申请收费的也可以。

安装

请先备份数据库,利用worpdress导出xml,前提是服务器按照了lnmp,具体的安装请访问:lnmp.org

下载程序

安装git程序:Debian/Ubuntu:apt-get install git ,CentOS:yum install git-core
git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt

mkdir -p /home/wwwroot/域名/.well-known/acme-challenge 创建临时目录

证书生成

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

提示:Had a problem while installing Python packages
停止:/etc/init.d/mysql stop
内存512MB需要增加交换分区

dd if=/dev/zero of=/swapfile bs=1024 count=524288
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

启动:/etc/init.d/mysql start
安装完成后可执行

swapoff /swapfile

Nginx虚拟主机的设置

server
{
listen 443 ssl;
server_name www.freeyun.com freeyun.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.freeyun.com;
ssl_certificate /etc/letsencrypt/live/www.freeyun.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.freeyun.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;
#include pathinfo.conf;
}

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

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

access_log off;
}


server
{
listen 80;
server_name www.freeyun.com freeyun.com;
location /.well-known/ {
add_header Content-Type 'text/plain;';
root /home/wwwroot/www.freeyun.com;
}
location / {
return 301 https://www.freeyun.com$request_uri;
}
}

证书续期

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

安装crontab :

yum install vixie-cron crontabs
chkconfig crond on
service crond start

添加执行crontab -e定时任务:

0 3 */60 * * /root/renew-ssl.sh

网站内容更新成https方式

强调备份数据
安装:Search & Replace插件执行
http://www.freeyun.com/wp-content/uploads/
替换为:https://www.freeyun.com/wp-content/uploads/

浏览器不出现绿色小锁,还有http的引用,右键查看网页源码查找引用http部分,如果是用站长统计请更新成https方式,部分主题也可能出现不支持https请换成https模式

引用资料

HTTPS的工作原理:
http://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html
免费SSL安全证书Let’s Encrypt安装使用教程:

http://www.vpser.net/build/letsencrypt-free-ssl.html

letsencrypt的限制:
https://community.letsencrypt.org/t/rate-limits-for-lets-encrypt/6769