说明:本人是nginx与tomcat的访问模式
一、
通过openssl命令生成证书(一摘自网络)
1、首先生成一个key
openssl genrsa -des3 -out ssl.key 2048
2、之后会要求你输入这个key对应的密码,
不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
由于生成时候必须输入密码。你可以输入后 再删掉。
mv ssl.key xxx.key
openssl rsa -in xxx.key -out ssl.key
rm xxx.key
mv ssl.key xxx.key
openssl rsa -in xxx.key -out ssl.key
rm xxx.key
3、 然后根据这个key文件生成证书请求文件
openssl req -new -key ssl.key -out ssl.csr
openssl req -new -key ssl.key -out ssl.csr
4、之后需要键入的信息可以任意
5、
最后根据这2个文件生成crt证书文件
openssl x509 -req -days 3650 -in ssl.csr -signkey ssl.key -out
ssl.crt
6、在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。
ssl on;
listen 443 ssl;
ssl_certificate /ssl.crt;(这里注意路径)
ssl_certificate_key /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;
#在location /{ }中加入 proxy_set_header X-Forwarded-Proto https; 配置
例如:
location / {
proxy_set_header X-Forwarded-Proto https;
}
7、然后重启nginx
二、配置Tomcat的Server.xml
1、 <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443"
proxyPort="443"
URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
这里
redirectPort="443"和
proxyPort="443"都改为443
2、
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
pattern="%h %l %u %t "%r" %s %b" />
这里value中要修改
remoteIpHeader、
remoteIpProxiesHeader、
protocolHeader的属性值
3、重启tomcat
三、将http访问自动转为https
例如:
server{
ssl on;
listen 443 ssl;
}