您的位置:首页 > 理论基础 > 计算机网络

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。)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx tomcat openssl