nginx+tomcat的ssl配置
首先,介绍下环境:
操作系统:CentOS 6.6
前端:nginx 1.6.2
后端:tomcat 7.0.55
编译安装nginx的时候已经安装有openssl和openssl-dev,这里就不需要再重新安装了。
1.生成key
使用openssl genrsa 生成一个key1
openssl genrsa -des3 -out ssl.key 1024
然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
由于生成时候必须输入密码。你可以输入后再删掉。1
openssl rsa -in ssl.key -out ssl_nopass.key
2.生成证书请求文件1
opensll -req -new -key ssl.key -out ssl.csr
3.最后根据这两个文件生成crt证书文件1
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
这里365是证书有效期 推荐3650哈哈。这个大家随意。最后使用到的文件是key和crt文件
如果需要用pfx 可以用以下命令生成1
openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx
4.在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。1
2
3
4
5
6
7ssl on;
ssl_certificate /home/ssl.crt;
ssl_certificate_key /home/ssl.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
然后重启nginx就大功告成了
我在这里有一个问题,值得写出来与大家分享
由于tomcat里面的应用,使用了springMVC的redirect,导致返回给客户端的url是http的,报错“ the plain http request was sent to https port”。
解决办法是是在location中添加一个proxy_redirect即可。如下:1
roxy_redirect http:// $scheme://;