启用免费HTTPS

最近看了酷壳网耗子哥写的博客,把我的网站的http域名也改为https了

为何要使用https,而不是http?

https可以理解为一种安全的http通信协议,比如你通过浏览器访问一个网站,中间会通过网络运营商,由于http是明文传输,中间报文就可能被其他人劫持,获取你的信息,而https就可以保证传输的加密性。

我的服务器是centos 6和nginx,打开网址(https://certbot.eff.org)选择nginx和centos6,照着步骤一步步做就行了。

因为原先使用的是apache,这里顺便说下如何使用nginx替换apache

安装nginx

yum install nginx
service nginx start

nginx的网页目录默认为:/usr/share/nginx/html/

可以通过vi /etc/nginx/conf.d/default.conf来修改默认目录,我修改为原先的Apache的目录是/var/www/html

root         /var/www/html;

由于nginx只负责转发请求,并不能解析php脚本,所以我们还需要安装php解析器:php-fpm,nginx是通过把请交给php-fpm来解析php生成html页面,所以安装它:

yum install php-fpm

接着配置ngxin的域名目录并关联php-fpm

server {
        listen 80;
        root /var/www/html/blog;
        server_name www.ihnbc.cn ihnbc.cn;
        index index.shtml index.html index.htm index.php;
        charset utf-8;
        access_log /home/www.ihnbc.cn.access.log main;

        location ~.*\.(php|php5)?$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
       }
}

php结尾的域名全部交给127.0.0.1:9000来执行,而php-fpm正好监听这个端口,启动php-fpm,重启nginx

/etc/init.d/php-fpm start
service nginx restart

配置https证书,下载certauto

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

然后运行:

sudo ./path/to/certbot-auto --nginx

certbot会扫描你Nginx里面的域名,选择需要配置的域名,多个用空格隔开,其他选项安装步骤执行就可以了,运行完后,certbot会在你的Nginx加上如下配置:

    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/ihnbc.cn/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/ihnbc.cn/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot

注意 listen 443 ssl后面http2是我添加上去的,http2开启后更有助于提高https的性能。

重启nginx,由于Let’s Encrypt的证书90天过期,所以你还需要配置一个任务定时去更新证书,使用cron,如下:

0 1 * * * /home/zc/certbot-auto renew

最后还有一件事要做,因为原先WordPress网站中使用的链接都是http的,所以你还需要更新网页中的http链接,不然你的链接上不会显示“安全锁”标识,使用WordPress的插件search-regex就可以批量替换(手动下载search-regex,放到wordpress的wp-content/plugins就可以了)