最近看了酷壳网耗子哥写的博客,把我的网站的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就可以了)