使用https加密协议的同学最好先学习下有关SSL的知识。给个链接:SSL证书。有基础的同学继续向下看,现在的服务器绝大部分使用的是apache或者nginx做前台响应,我使用的wdcp采用的是nginx,所以这篇文章讲的也就是nginx的https加密方法。
一、注册申请到免费的SSL证书
这部分有现成的教程,先在http://www.startssl.com官网上注册并申请到免费的SSL认证,甩个链接:StartSSL免费SSL证书成功申请。
按照教程完成下来你会得到3个文件,分别是mengdodo.key mengdodo.crt mengdodo.pfx (KEY为私钥,crt为公钥,pfx为包含了公钥和私钥的二进制格式的证书,用于SSL证书发布网站的登录允许。)
二、在Nginx服务器配置证书
首先把公钥和私钥放置到服务器,位置是自己定义的,打个比方存放在根目录的root文件夹下。进入wdcp的nginx的配置文件/www/wdlinux/nginx/conf/vhost/mengdodo.conf(此处讲解下,nginx的配置文件应该是在/nginx/conf/nginx.conf,修改也是修改nginx.conf。但是wdcp是多域名的虚拟主机管理系统,在内容分发上要管理多个站点,所以nginx.conf文件最下面引用了一句话,意思是不同的域名需要在vhost文件夹下使用单独的配置文件。)
参照下面的图添加如下行:
listen 80; listen 443 ssl; ssl_certificate /root/mengdodo.crt; ssl_certificate_key /root/mengdodo.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSLv2不安全,TLS1.0在遭受到降级攻击时,会允许攻击者强制连接使用SSLv3,所以禁用SSLv3 ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; #加密套件 ssl_prefer_server_ciphers on; #在一个 SSLv3 或 TLSv1 握手过程中选择一个加密算法时,一般使用客户端的首选算法。如果设置了如下两行配置,则会替代地使用服务器端的首选算法。 ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; #具体nginx的SSL安全性信息查看:http://www.tuicool.com/articles/IvAVnqA
注意,如果百度来的做法是下面这样的为错误的,具体参考nginx官网关于80端口和443端口同时存在的说明:nginx的80和443端口同时存在 。
listen 443;
ssl on;
ssl_certificate /root/freehao123.crt;
ssl_certificate_key /root/freehao123.key;
ssl_session_timeout 5m;
配置完全后重启nginx,指令如下:
service nginxd reload
此处会提示要求输入密钥的密码用以关闭和启动,Enter PEM pass phrase:密码
这种情况可能是在设置私钥key时将密码设置写入了key文件,配置好的Nginx每次启动都要输两遍PEM pass phrase,很是不爽,尤其是在服务器重启后,Nginx压根就无法自动启动,必须手动启动并输入那麻烦的PEM pass phrase。如何避免Nginx启动出现Enter PEM pass phrase呢?
这种情况可能是在设置私钥key时将密码设置写入了key文件,导致Nginx/Apache等系列服务器在启动时要求Enter PEM pass phrase。我们需要做的是剥离这个密码,利用如下OpenSSL命令生成server.key.unsecure文件:
openssl rsa -in server.key -out server.key.unsecure
如果server.key.unsecure生成成功,我们就修改Nginx配置,比如像下面这样:
# 这里是SSL的相关配置 server { listen 443; server_name www.example.com; # 你自己的域名 root /home/www; ssl on; ssl_certificate /etc/nginx/certs/server.crt; # 修改下面这一行指向我们生成的server.key.unsecure文件 ssl_certificate_key /etc/nginx/certs/server.key.unsecure; }
重启完全nginx后直接访问https地址还是不行,哈哈,记得进iptables开启443端口,因为https默认使用的就是443端口。
以上就是萌嘟嘟的wdcp使用https加密协议的方法,那效果怎么样呢,萌嘟嘟感觉略微有些蛋疼。首先很多人提到的https会比普通http协议要更消耗系统资源,反应更慢。萌嘟嘟在使用后并没明显的体验到,值得一提的是萌嘟嘟站点并不能完全的让浏览器的那把锁变成绿色,反而是一把黄色的锁,主要原因还是我的站点有使用到百度联盟的广告JS,百度推广官方并没有适配到https协议的,只有http形式的,所以没法做到完完全全的只加载本站的数据。