https
给网站启用https / ssl
railscasts中讲了一种简单的方式. 就是用nginx做反向代理, 给nginx启用https / ssl. 这样做的好处是程序基本不用改, 通过nginx来做的话效率有保证.
首先切换到nginx的conf目录: cd /opt/nginx/conf
生成证书:
openssl req -new -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
然后修改nginx的https部分的配置为如下形式:
# HTTPS server
server {
listen 443;
server_name *.dev;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_pass https://127.0.0.1;
}
}
测试nginx配置无误: ./nginx -t
重新载入nginx 配置: ./nginx -s reload
然后就可以进行测试了
以上有个问题, 就是证书是自己颁发的, 通过浏览器浏览https页面的时候会有警告. 如果是api, 不提供浏览器访问的话, 我觉得是没有什么问题的.
疑问: 自己签发的证书安全性方面会有问题吗? 应该是没有的
后记: https 加密包括url加密, 所以url中的参数信息等等同样是安全的.