Tomcat的SSL证书配置以及Tomcat+Nginx实现SSL配置
- request.getScheme() //总是 http,而不是实际的http或https
- request.isSecure() //总是false(因为总是http)
- request.getRemoteAddr() //总是 nginx 请求的 IP,而不是用户的IP
- request.getRequestURL() //总是 nginx 请求的URL 而不是用户实际请求的 URL
- response.sendRedirect( 相对url ) //总是重定向到 http 上 (因为认为当前是 http 请求)
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>
----------------------------------------------------------------------------------------------------
一、转为PFX
openssl pkcs12 -export -in 【服务器证书】 -inkey 【私钥】 -out server.pfx -certfile 【证书链】
例
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx -certfile DigiCertCA.crt
设置密码为:123456
二、转PFX为jks
keytool -importkeystore -v -srckeystore 【pfx文件】 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore 【jks文件】 -deststoretype jks -deststorepass 123456
例
keytool -importkeystore -v -srckeystore server.pfx -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore server.jks -deststoretype jks -deststorepass 123456
三、tomcat配置
修改配置文件
打开 server.xml 文件找到如下段落即为配置您的服务器证书所相关的配置。
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
找到该段落后,请参考如下所示内容修改这段配置文件。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="conf\[keystore_name]" keystorePass="password"
clientAuth="false" sslProtocol="TLS" />
注意:记得将<!--和-->这对符号删除,否则该段落配置将被屏蔽。
修改完毕保存退出后, 您可以尝试启动 Tomcat 服务, 测试是否可以正常通过 https 方式访问您的域名。 测试成功后请务必妥善备份您的密钥库 (keystore)
---------------------------------------------------------------------------------------------------------
把jks上传到java容器在的服务器上,路径只要不是webapps下就可以,然后到conf目录下server.xml里配置
- <Connector port="" protocol="org.apache.coyote.http11.Http11Protocol"
- maxThreads="" SSLEnabled="true" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLSv1+TLSv1.1+TLSv1.2"
- SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"
- keystoreFile="/data/ifengsite/java/_.ihouse.ifeng.com.jks" keystorePass="wjoyxt" />
这个connector元素默认被注释掉的,打开注释后添加一些属性,如:
keystoreFile指向刚才的jks文件
keystorePass值为jks密码,就是证书的密码。
Port是端口
SSLEnable是开启ssl的意思。
保存修改后重启容器即可。
Java容器中的http自动跳转https的安全配置
1、到conf目录下的web.xml,在</welcome-file-list>后面,也就是倒数第二段里,加上这样一段
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
这步目的是让非ssl的connector跳转到ssl的connector去。所以还要配置一步。
2、到server.xml去修改
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
redirectPort改成ssl的connector的端口443
重启后便会生效。
----------------------------------------------------------------------------------------
Nginx+Tomcat配置SSL:
Tomcat本身不需要配置SSL,只需要在Nginx进行反向代理配置即可
Nginx.conf配置示例:
- upstream mobileserver {
- server 10.0.10.45: max_fails= fail_timeout= weight=;
- server 10.0.10.46: max_fails= fail_timeout= weight=;
- }
- server {
- listen ssl;
- access_log /data/logs/nginx/world_access.log;
- server_name world.ihouse.ifeng.com;
- location / {
- proxy_pass http://mobileserver/;
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-Proto https;
- proxy_redirect off;
- }
- location ~* \.(html|shtml|htm|inc|log)$ {
- expires 1m;
- }
- location ~* \.(css|js)$ {
- expires 1m;
- }
- location ~* ^.+\.(jpg|jpeg|gif|swf|mpeg|mpg|mov|flv|asf|wmv|avi|ico)$ {
- expires 15d;
- }
- ssl on;
- ssl_certificate /data/ifengsite/htdocs/_.house.com.crt;
- ssl_certificate_key /data/ifengsite/htdocs/_.house.com.key;
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDH:AES:HIGH:!aNULL:!MD5:!ADH:!DH;
- ssl_protocols TLSv1 TLSv1. TLSv1.;
- }
Tomcat的SSL证书配置以及Tomcat+Nginx实现SSL配置的更多相关文章
- 阿里云slb和ucloud负载均衡ulb添加ssl证书将http服务https化的配置详解
阿里云和ucloud服务器配置ssl证书将http服务https化的配置详解 项目背景: 苹果App于2017年1月1日将启用App Transport Security安全功能,即强制App通过HT ...
- SSL证书安装(Tomcat)腾讯云服务器
一.SSL证书免费领取地址一年的 https://www.toolmao.com/get-free-ssl 什么你们公司买的?每次免费领取一年,能不能轮流领取没试过.商鸡,商鸡.... 二.下载SSL ...
- 数字证书、SSL、HTTPS及在Nginx中的配置
一.什么是 RSA.SSL.HTTPS RSA:它是非对称加密算法的一种,而且是最常用的一种.它的理论基础是:计算两个大质数的乘积非常简单,而对该乘积进行因子分解就非常困难.而且 这两个质数越大,对其 ...
- 简单的制作ssl证书,并在nginx和IIS中使用
2020年最后一篇博文收官,提前祝各位园友新年快乐 现在的后端开发,动不动就是需要https,或者说是需要ssl证书,既然没有正版的证书,那么我们只能自己制作ssl的证书了. 说明:证书的制作采用的是 ...
- 七牛云域名DV SSL证书申请流程以及CDN融合加速配置
从2017年起,苹果ios以及微信小程序都陆续要求请求连接request地址是使用HTTPS协议的.所以在项目开发阶段就要考虑解决https的问题,同时这也是为项目实际安全所考虑.最近我也是在折腾项目 ...
- SSL证书申请,如何快速通过SSL文件验证。
申请SSL证书会让我们进行验证域名,一般方式如下: 1.FTP验证 2.文件验证 3.DNS验证 这三种方式各有各的优缺点,本文解决如何在IIS的环境下通过sslforfree网站的文件验证. 域名: ...
- 案例:配置apache和nginx的SSL加密传输协议
一.SSI解释 SSI是一种类似于ASP的基于服务器的网页制作技术.将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本.图形或应用程序信息包含到网页中.例如,可以使用 SSI 包含 ...
- win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
原文:http://www.cnblogs.com/naniannayue/archive/2012/11/19/2776948.html 要想成功架设SSL安全站点关键要具备以下几个条件. 1.需要 ...
- centos搭建免费的ssl证书,大部分浏览器均支持!(let’s encrypt 的使用记录)
安装certbot wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 然后就是通过这个脚本获取证书,安装前先将NGINX 停一下. ...
- linux tomcat【9.0.12】 使用 ssl证书 配置 https 的具体操作 【使用 域名 】
1.前言 根据上一个随笔,已经可以正式在 阿里云服务器发布 工程了 ,但是用的协议默认是 http ,端口80 但是 http不安全 ,容易被拦截抓包 ,于是出来了个 https tomcat发布 对 ...
随机推荐
- Python 面向对象2
静态方法 静态方法相当于函数,可以不创建对象直接引用 如果在类里面用静态方法,相当于函数,可以不创建对象,直接是用类里面的方法,你就当它是函数. 静态方法名义上归类管理,实际上静态方法访问不了类或实例 ...
- IIS7.5下发布应用程序备忘
近期工作需要把应用程序发布升级到IIS7.5中,IIS7部署方式跟IIS6差别还是挺大的. 部署常规方式:新建虚拟目录>转成应用程序. 在本机用http://localhost/别名访问一切正常 ...
- 【学】React的学习之旅4-添加事件(onChange)
实现联动绑定,在文本框中输入内容的同时,后面的span里内容跟着一起变化: onChange(),一旦触发一次变动,就执行某个函数: 既然已经在getInitialState属性里申明了一个变量inp ...
- R语言-基本图形
barplot() 条形图 spine() 棘状图 pie() 饼图 hist() 直方图 plot(density(x))核密度图 boxplot(X) 箱线图 vioplot() 小提琴图 dot ...
- git 文件重命名
文件重命名 git mv old_name new_name git commit -m 'rename' git push origin master 删除文件 git rm filename
- Win7系统安装好Axure点击运行报.NET Framework4.0未安装的解决办法
1:问题 由于工作需要,需要研究一下Axure原型设计软件的使用方式,在公司的电脑上成功安装了从同事那里拿来的Axure7.0软件,能够正确运行没有任何问题,在自己的电脑上安装的也非常顺利,不过运 ...
- Nexus3.0.0+Maven的使用(二)
因为Nexus3.0.0与Nexus2.X系列的差别很大,所以本章节我大概讲解下Nexus3.0.0的功能使用. 1.功能介绍 1.1 Browse Server Content 1.1.1 Se ...
- Emacs使用projectile-rails 插件注意事项
插件地址 https://github.com/asok/projectile-rails 我自己使用rbenv这个ruby版本控制工具来,管理下载ruby,但是他不是全局安装ruby之类的gem,如 ...
- Twitter-Snowflake,64位自增ID算法详解
Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统 ...
- 下载Tomcat时Tomcat网站上的core和deployer的区别
下载Tomcat时Tomcat网站上的core和deployer的区别 做JavaEE开发的朋友,无论是学习者还是已经工作的朋友,总是会用到Tomcat这个Servlet容器,那么大家从Tomcat官 ...