博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+tomat https ssl 部署 完美解决方案
阅读量:5098 次
发布时间:2019-06-13

本文共 2281 字,大约阅读时间需要 7 分钟。

关于nginx+tomcat https的部署之前网上一直有2种说法:

1.nginx和tomcat都要部署ssl证书

2.nginx部署ssl证书,tomcat增加ssl支持

 

在实际的部署过程中nginx的配置和ssl证书部署很顺利,但是tomcat用网上流传的说法配置之后,发现非静态内容无法正常使用。(项目用了dubbox,dubbox基于resteasy发布rest协议)

经过一系列折腾,最终总结出以下经验,希望能帮到其他人。

 

一. 申请SSL证书

     SSL证书其实可以自己生成,但是因为自己生成的证书不是浏览器厂商认可的受信机构颁发,所以浏览器会打红叉!为了用户体验,所以

我们要到SSL证书厂商那里申请SSL证书。个人推荐 globalsign(淘宝用的) wosign.com(价格优惠) startssl(有免费版)。如果使用单域名DV证书,签发只要15分钟-2小时。厂商通常会把签发好的证书以邮件形式发送过来。

1. 自己生成 证书签名请求(CSR)和私钥(KEY)。可以使用厂商提供的工具https://www.trustasia.com/tools/csr-generator/  

也可以使用openssl生成 openssl req -new -nodes -newkey rsa:2048 -keyout domain.key -out domain.csr 

2.把 证书签名请求(CSR)和私钥(KEY)提供给厂商。

3.收到厂商签发好的证书。(私钥还是自己的)

 

二.部署证书到nginx并配置

 

nginx的证书部署相对简单。

1.确定nginx是否安装了ssl模块,如果没有需要重新mark install。(建议 pcre-8.38 zlib-1.2.8 openssl-1.0.2g  版本太高可能导致编译失败)

2.把厂商提供的 x.crt 内容追加到 x.cer, 然后把 x.key 和 x.cer 放到Nginx服务器

3.nginx.conf 增加https支持。主要是配置 80 和 443 端口的监听

server {         listen     80;        server_name  x;        rewrite ^(.*)$  https://$host$1 permanent;         }  server {        listen       443;        server_name  x;        ssl                  on;        ssl_certificate      /etc/nginx/server.cer;        ssl_certificate_key   /etc/nginx/server.key;        ssl_session_timeout  5m;        ssl_protocols TLSv1;        ssl_ciphers  HIGH:!aNULL:!MD5;        ssl_prefer_server_ciphers   on;         location / {              client_max_body_size    16m;              client_body_buffer_size 128k;              proxy_pass                          http://online/;              proxy_set_header        Host $host;              proxy_set_header        X-Real-IP $remote_addr;              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;          proxy_set_header           X-Forwarded-Proto https;              proxy_next_upstream   off;              proxy_connect_timeout   30;              proxy_read_timeout      300;              proxy_send_timeout      300;        }    }

我这里做了http强跳到https,不需要这个功能,可以去掉  rewrite ^(.*)$ https:

三.tomcat增加对https协议的支持

 

1.Connector节点加入 redirectPort="443" proxyPort="443"

2.加入新的Value节点 <Valve className="org.apache.catalina.valves.RemoteIpValve"

remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"/>

 

转载于:https://www.cnblogs.com/zhanghaoh/p/5293158.html

你可能感兴趣的文章
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
backgound-attachment属性学习
查看>>
个人作业——关于K米的产品案例分析
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
java 中的线程(一)
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
素数判断BFS之“Prime Path”
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
Django中间件
查看>>
xcode 5.1安装vvdocument
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>