Nginx添加SSL证书并设置自动http转换HTTPS
2016-06-12 16:17
681 查看
说明:本人是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
3、 然后根据这个key文件生成证书请求文件
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
修改之前的nginx配置文件,添加 error_page
497 https://$host:$server_port$request_uri;
例如:
server{
ssl on;
listen
443 ssl;
error_page
497 https://$host:$server_port$request_uri;( 497表示使用http连接https的错误码。一旦出错让其跳转到https。)
}
一、通过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
3、 然后根据这个key文件生成证书请求文件
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
修改之前的nginx配置文件,添加 error_page
497 https://$host:$server_port$request_uri;
例如:
server{
ssl on;
listen
443 ssl;
error_page
497 https://$host:$server_port$request_uri;( 497表示使用http连接https的错误码。一旦出错让其跳转到https。)
}
相关文章推荐
- java-模拟tomcat服务器
- i-jetty环境搭配与编译
- nginx代理指定目录
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- 访问Nginx发生SSL connection error的一种情况
- OpenSSL编程之RSA
- Linux部署Tomcat服务器
- Nginx+Naxsi部署专业级Web应用防火墙
- jenkins------结合maven将svn项目自动部署到tomcat下
- 怎样安装openssl 2011-12-11
- 如何搞定tomcat这只喵~
- CentOS 6.2实战部署Nginx+MySQL+PHP
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- Nginx 学习笔记(一)