博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
https配置从tomcat迁移到Nginx
阅读量:2432 次
发布时间:2019-05-10

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

一、背景介绍

最近有个APP项目,为了避免数据网络传输过程中明文传输,需要采用https协议进行APP端和服务端的数据交互。没有去专门第三方的证书签发机构申请证书,而是自己通过jdk提供的keytool自己给自己签发了一个证书,就APP端使用,没用在浏览器中,也无所谓啦。

二、jks格式证书获取

使用JDK的keytool工具生成jks密码库。

keytool -genkey -alias tomcat -keyalg RSA -validity 365  -keystore /home/kuanrf/itclj.keystore#输入keystore密码Enter keystore password:#再次输入keystore密码Re-enter new password:#输入你的姓名What is your first and last name?  [Unknown]:  itclj#输入你的单位名称What is the name of your organizational unit?  [Unknown]:  itclj.com#输入你的组织名称What is the name of your organization?  [Unknown]:  itclj.com#你所在城市What is the name of your City or Locality?  [Unknown]:  chongqing#你所在省份What is the name of your State or Province?  [Unknown]:  chongqing#两位小写字母表示的国家代码What is the two-letter country code for this unit?  [Unknown]:  cnIs CN=itclj, OU=itclj.com, O=itclj.com, L=chongqing, ST=chongqing, C=cn correct?#是否确认信息  [no]:  y#输入
的主密码,这项较为重要,会在tomcat配置文件中使用,#建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,#直接回车则在你在定义的位置找到生成的文件Enter key password for
(RETURN if same as keystore password):Re-enter new password:

keytool参数说明

-alias tomcat:定义别名为tomcat

-keyalg RSA:加密方式为RSA加密
-validity 365:证书有效期365天,单位(天)
-keystore /home/kuanrf/itclj.keystore:证书文件存储位置

三、jks格式证书在tomcat中配置

打开Tomcat根目录下的/conf/server.xml,找到Connector port=”8443”配置段,修改为如下。

http协议端口配置

https协议端口配置

到这里通过tomcat实现ssl加密传输也就可以使用了。但是这种证书配置在tomcat中有很多弊端,不能开启apr运行模式,只能运行在nio模型下。不能用Nginx实现loadbalance,因为Nginx是实现在网络层的第七层的,无法实现https透传,https解码必须在Nginx上进行,解码后再把解码后的信息传给下后边的tomcat。要把tomcat中的https配置前移到Nginx中需要做下面这些步骤的处理。

四、jks格式转换为pem格式证书

从一个JKS的keystore中导出public key (certificate)

keytool -export -alias tomcat  -keystore /home/kuanrf/itclj.keystore -file itclj.crtEnter keystore password:Certificate stored in file 

转换成PEM格式

openssl x509 -out itclj-pem.crt -outform pem -text -in /home/kuanrf/itclj.crt -inform der

导出private key: ,编译后运行

javac ExportPriv.java
java ExportPriv 
> exported-pkcs8.key

ExportPriv 参数说明:

keystore:jks的keystore文件
alias:keystore别名
password:keystore密码
exported-pkcs8.key:导出的私钥

java ExportPriv /home/kuanrf/itclj.keystore tomcat 123456 > /home/kuanrf/itclj-pkcs8.key

上述得到的private key是PKCS#8 PEM格式,使用如下命令才能转换成apache可以使用的RSA格式

openssl pkcs8 -inform PEM -nocrypt -in itclj-pkcs8.key -out itclj.key

五、pem格式证书在nginx中配置

upstream ssl.itclj.com {        server 127.0.0.1:8680;    }
server {        listen            443 ssl;        server_name       api.itclj.com;        ssl               on;        ssl_certificate   /home/kuanrf/itclj-pem.crt;        ssl_certificate_key  /home/kuanrf/itclj.key;        location / {            #注意是http协议,而不是https            proxy_pass  http://ssl.itclj.com;            proxy_set_header X-Real-IP $remote_addr;        }    }

https配置至此已经迁移到了Nginx,现在只需要把tomcat的Connector port=”8443”配置项去掉即可。tomcat可以开启apr运行模式,也可以通过Nginx实现loadbalance了。

六、逻辑图

逻辑图

你可能感兴趣的文章
SOAP 节点基础
查看>>
利用WID 和WESB 构建基于Mediation Flow 的ESB Service
查看>>
SOA重塑证券企业应用架构
查看>>
MDS:解决SOA的数据难题
查看>>
WebSphere Message Broker V6.1 中的新增功能
查看>>
明确SOA中“A”——架构真正含义
查看>>
有效的SOA需要四种主要中间件产品的支持
查看>>
揭秘SOA的七个神话:SOA不是万灵药
查看>>
在控制中心点选数据库时出现的SQL1031N问题
查看>>
使用 SOA 技术实现既有资产的开发和重组(上)
查看>>
使用Appcelerator实现因特网应用程序
查看>>
使用 SOA 技术实现既有资产的开发和重组(下)
查看>>
JIRA和CVS的集成配置过程
查看>>
经验总结:登录和优化IBM DB2的执行速度
查看>>
JIRA带来的管理思路
查看>>
DB2数据库物化视图:MQT物化查询表的使用
查看>>
使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端
查看>>
open workbench 和ganttproject 甘特图制作项目管理软件
查看>>
开源项目管理工具——Open Workbench
查看>>
使用 WebSphere Portlet Factory 构建SOA 前端
查看>>