nginx支持https配置SSL
1. 生成自签名证书
需要openssl库,大部分linux默认安装了,如无安装,需手动安装
进入创建证书和私钥的目录
cd /usr/local/nginx/conf/ssl |
创建服务器私钥,需输入密码
# openssl genrsa -des3 -out test.com.key 1024 |
生成一个证书请求(csr),会提示输入省份,城市,域名,邮箱信息等,自签字证书可随便填写
# openssl req -new -key test.com.key -out test.com.csr |
除去私钥口令,不然在nginx加载ssl需要输入口令:
# cp test.com.key test.com.key.bak |
最后使用上面的csr和私钥生成crt证书,有效期365天
# openssl x509 -req -days 365 -in test.com.csr -signkey test.com.key -out test.com.crt |
自签名颁发的SSL证书虽然能够实现加密传输功能,但得不到浏览器的信任。受浏览器信任的StartSSL免费SSL证书
2. nginx配置项
证书和私钥绝对目录配置如ssl_certificate和ssl_certificate_key
server { |
启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf |
通过https访问测试通过,https://test.com
3. 通过rewrite模块从http跳转到https
通过http://test.com访问,301跳转到https://test.com
server { |
http和https也可配置在一起
server { |
4. nginx中ssl相关配置说明
下面配置强制用户连接只能引入SSL/TLS那些强壮的协议版本和强大的加密算法,默认的CBC模式的加密容易受到攻击,可优先使用RC4加密
ssl_protocols SSLv2 SSLv3 TLSv1; |
配置session缓存,1m缓存约可存放4k个会话,默认缓存超时是5分钟,可设置
ssl_session_cache shared:SSL:10m; |