关于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"/>

nginx+tomat https ssl 部署 完美解决方案的更多相关文章

  1. Nginx+Tomcat Https SSL部署方案

    1.软件版本: nginx-1.15+ tomcat-8.0+ 2.先解决一个疑问:Tomcat到底需不需要配置SSL? 答案:不需要 3.SSL申请 使用腾讯云.阿里云的服务器,会更加方便申请.(申 ...

  2. 安卓手机上微信无法打开Https网址的完美解决方案

    1,第三方网站检测网站的SSL证书是否正确的安装 https://www.geocerts.com/ssl-checker,大概率你会看到下边的场景,一个证书链完整的警告,如果想知道我的基础配置是什么 ...

  3. Nginx 配置 HTTPS SSL

    配置文件如下:[可以在阿里云上申请免费证书] #user nobody; worker_processes 1; events { worker_connections 1024; } http { ...

  4. Nginx 配置 HTTPS SSL 代理

    配置文件如下: #user nobody; worker_processes 1; events { worker_connections 1024; } http { include mime.ty ...

  5. apache2 tomat https 变成http的解决方案

    1.apache2   设置 RequestHeader set X-Forwarded-Proto "https" 2.springboot 设置 server.tomcat.p ...

  6. Nginx 502/504 Gateway time-out错误完美解决方案【转发】

      在安装完Nginx+PHP-fpm+Mysql后,跑PHP的应用会经常出现504 Gateway Time-out 或者502 Bad Gateway的情况. Nginx 504 Gateway ...

  7. Tomcat服务器配置https协议(Tomcat HTTPS/SSL 配置)

    通常商用服务器使用https协议需要申请SSL证书,证书都是收费的,价格有贵的有便宜的.它们的区别是发行证书的机构不同,贵的证书机构更权威,证书被浏览器否决的几率更小. 非商业版本可以通过keytoo ...

  8. Nginx自建SSL证书部署HTTPS网站

    一.创建SSL相关证书 1.安装Nginx(这里为了测试使用yum安装,实际看具体情况) [root@localhost ~]# yum install nginx -y #默认yum安装已经支持SS ...

  9. HTTPS 常见部署问题及解决方案

    在最近几年里,我写了很多有关 HTTPS 和 HTTP/2 的文章,涵盖了证书申请.Nginx 编译及配置.性能优化等方方面面.在这些文章的评论中,不少读者提出了各种各样的问题,我的邮箱也经常收到类似 ...

随机推荐

  1. Python Web开发之Flask

    PythonWEB框架之Flask 前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenT ...

  2. 【转载】JSP 获取真实IP地址的代码

    JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.   但是在通过了 Apache,Squid ...

  3. c# 方法参数 params 的试用

    //添加方法 public void test(params string[] messages) { } //调用方法 test("aaa","bbb",&q ...

  4. C++模板源代码的三种组织方式

    模板代码和非模板代码是有区别的,如果像非模板代码那样把模板的声明放在头文件.h中,把模板的定义放在源文件.cpp中,那么使用这个模板时会得到一个链接错误.这个错误的原因在于,模板的定义还没有被实例化. ...

  5. Group Anagrams - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Group Anagrams - LeetCode 注意点 字母都是小写的 解法 解法一:用一个字符串表示strs[i]中出现的字母,比如:abc-> ...

  6. Webpack 配置示例

    Webpack 作为前端构建工具,对于大型网站开发,大大提升了开发效率.要使用webpack需要先安装webpack工具: 先来看一个最简单的命令 $ webpack main.js bundle.j ...

  7. centos 安装MATLAB :设置回环设备失败: 没有那个文件或目录

    基本参数:centos 7 x86_64,linux 系统, 安装matlab, 已经下载R2016b_glnxa64.iso 但挂载的时候遇到问题: [root@lf mnt]# mount -o  ...

  8. 虚拟机中在centos6.7环境下安装eclipse

    采用的是在线安装的方式,所以省去了很多配置环境变量的步骤,经过以下5步. 1,  yum install eclipse 2,  安装xmanager -> windows下远程eclipse可 ...

  9. 1.Linux的发展历史以及 GNUGPL和open source

    发展历史: 20实际60年代:那时候的计算机一般只有在军事,科研以及学术院校才能见到,不是一般人能接触的东西.开始的时候计算机的时候的输入靠卡片阅读器,即程序开发者在卡片上打洞放入卡片阅读器上输入,在 ...

  10. UVALive 7505 Hungry Game of Ants (2015Ecfinal)

    题意: 长度是n的线段上点的编号从1~n,每个点有一只蚂蚁蚂蚁的体重等于该点的编号,最初每只蚂蚁可以选择向右走或者向左走两只蚂蚁相遇时体重大的吃掉体重小的并且体重增加为两只的体重和,走到边界时掉头,问 ...