免费的https证书letsencrypt

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

我们需要https?

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

https

选择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

网站搬家

wordpress架的网站在外面好长时间,终于决定搬回来了,记录搬家到阿里云的过程。

原因

在美国的虚拟主机,便宜的,一年100多块,速度上还是接受,有每个月宽带限制,几个网站共用一个IP的,对于国内的虚拟主机价格实惠,做个小站流量小。通过DNSPOD监控发现有偶尔的无法访问,另外访问速度相对慢一点。在某些原因,写文章审核保存草稿比较慢,无法接受,通常我一篇文章写几个小时反复的查看,排版。上面种种原因,要搬到国内。

过程

1、购买云主机

通过对比选择阿里云,目前国内有腾讯云,盛大云,百度云等,价格上面阿里云优惠,还有是万网被阿里云收购,在云主机上面经历过几年的验证,稳定可靠性有保 证。另外我腾讯没512MB内存云服务器,我网站没有必要弄1GB内存云服务器。服务器地域青岛一个月49.5,在网上找个优惠码打9折。当然如果你想要1G内存的,也可以购买腾讯云。操作系统就选择linux centos 7.0。

2、备份数据:

一般在虚拟主机都有phpmyadmin,通过界面导出整个网站数据库。还有一种方法是利用wordpress工具->导出,来导出xml数据。不建议IE浏览器做这种操作,否则存在导出数据不全。拷贝你的wordpress程序。

3、安装环境

安装Xshell,登录到你的云主机。

用于相互传送文件的工具,运行:yum install lrzsz

lrzsz的命令说明 rz :本地文件到服务器,sz xx:服务器文件到本地。

安装lnmp(Nginx、PHP、MySQL、phpMyAdmin)命令:wget -c https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp

上面执行时间有点长,看你主机性能。

按照提示是在mysql密码。

4、恢复网站数据

添加vhost执行: lnmp add vhost  (注意选择支持伪静态)

删除是有的插件,防止某些插件导致网站502错误等。

4.1可视化恢复:

将你备份的程序拷贝至你的目录(比如我的www.freeyun.com)下,phpmyadmin创建数据库,恢复你的sql文件,或者你登录后台通过xml的文件恢复数据。

4.2mysql命令恢复,注意mysql命令后面的分号(;):

mysql -u root -p;//登录数据库

CREATE DATABASE IF NOT EXISTS wordpress DEFAULT CHARSET utf8 COLLATE utf8_general_ci;//创建数据库wordpress

show databases;//显示全部数据库
use wordpress;//选择数据库
source  /~/wordpress.sql;//导入数据文件
drop database wordpress;//销毁wordpress数据库

为了正常升级wordpess 及插件执行:chown www:www -R www.freeyun.com

目录www.freeyun.com 下的user.ini文件无法直接修改,而且是隐藏文件可能在winscp下可能无法看到,建议使用vim编辑器或nano编辑器进行修改。

如要修或删除需要先执行:chattr -i /网站目录/.user.ini

修改完成后再执行:chattr +i /网站目录/.user.ini

如果你想要访问你的网站,你需要wp_options下面siteurl的值修改成你服务器IP地址。

5、配置mail

为了你的主机支持wordpress mail的,即发表评论,你收到邮件通知,回复评论,人家评论者收到恢复。有两种方法

  • 安装WP-Mail-SMTP插件,
  • 安装postfix这个配置有点复杂,作为sendmail的代替者,速度秒发e-mail,我后面文章再补写一篇文章

6、备案

分两步审核,第一是阿里云审核,第二是你身份证属地通信管理局,具体就看阿里云的提示,我第一步3天时间(包括了邮寄资料的时间),第二步8个工作日。这期间,你要把你的dns指向阿里云IP。

结束语

2015-8-26通过的备案,备案期间,天天上去看管局通过没,接不到管局电话。经过几天观察,没发现有宕机,访问速度杠杠的,最近在由于我网站的图片有些多,是不是得用七牛的加速下下。gravatar 的大头像有点烦,国内是加载不到,禁用中。

wordpress访问速度提升

缘由

wordpress打开前台很块,可是在打开后台的时候就会花大概10秒钟时间,或更长时间,往往怀疑是主机空间的问题!其实不是,用火狐浏览器发现一直在加载fonts.googleapis.com及gravatar.com!对应了谷歌的字体库和大头贴,众所周知的原因!在国内是无法访问的,使用了Akismet自动屏蔽垃圾评论,每次都记录操作日志会导致数据库的表wp_commentmeta过大!

下面给出推荐解决方法!

使用插件替换掉谷歌的字体库

解决方法:

1、安装插件:Useso take over Google

用360前端公共库Useso接管Google字体库和Google公共库,无需设置,插件安装激活后即刻生效。

2、打开主题下的functions.php 文件,将以下代码复制粘贴保存即可

function mytheme_get_avatar($avatar) {
$avatar = str_replace(array(“www.gravatar.com”,”0.gravatar.com”,”1.gravatar.com”,”2.gravatar.com”),”gravatar.duoshuo.com”,$avatar);
return $avatar;
}
add_filter( ‘get_avatar’, ‘mytheme_get_avatar’, 10, 3 );

3、使用phpmyadmin 管理数据库,清理wp_commentmeta表

或者使用WP Clean Up插件清理数据库,操作数据库要谨慎。

参考链接:

http://www.brunoxu.com/use-360-front-public-library-took-over-google-fonts-and-public-library.html

http://www.freehao123.com/wordpress-gravatar/