在前几天给网址换成https,在地址栏会看到一把绿色小锁,表示你访问的网站受到安全保护。letsencrypt是的免费的自动化的安全证书,我的博客是用的wordprss和lnmp搭建的。
我们需要https?
相信今年的315晚会,的一个小环节,演示手机app,在公共的wifi那里打开手机APP,相关的购物信息,家庭地址啥时间产生的交易时间,都会给抓取到。这其中的原因是用了公共场所的wifi,但更重要的是因为经过wifi联网的数据是没加密的。再有,在你们浏览器打开百度、京东等网站,右下角弹窗,或者手机浏览器打开在正中间,电信运营商在中间插入他们的代码。https比https多s,用了ssl传输加密协议433端口,保护内容安全完整性。淘宝 百度 谷歌 京东等都启用https,数据安全非常重要。https的站点,搜索引擎权重高点,目前百度联盟不支持https,无法显示广告,站点配置301跳转。通信过程下图
选择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