设为首页 收藏本站
查看: 683|回复: 0

[经验分享] Tomcat里面配置HTTPS注意事项

[复制链接]

尚未签到

发表于 2017-1-26 12:19:51 | 显示全部楼层 |阅读模式
通过给别人解决Tomcat的配置SSL的问题,又加深了一些理解,也想为新人记录一些注意事项。现在记录如下:
1. 生成证书的文章多得是,我就不说了,但是在配置ssl的时候,可以直接使用PKCS12格式的证书充当证书库,可能不是每个人都知道。如果这样使用的时候,一定要告诉Tomcat你正在使用PKCS12格式的证书库,因为默认的格式是JKS. 举例如下:

<Connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"
SSLEnabled="true" maxThreads="150" sslProtocol="TLS" clientAuth="true"
keystoreFile="E:\JBosss_Tomcat\Tomcat6\Test_SSL\apache-tomcat-6.0.18\conf\server.p12"
keystoreType="PKCS12" keystorePass="password"
truststoreFile="E:\JBosss_Tomcat\Tomcat6\Test_SSL\apache-tomcat-6.0.18\conf\root.jks"
truststoreType="JKS" truststorePass="password"/>


2. XML文件是区分大小写的,你写在server.xml里配置的有些是通过MBean赋值到Tomcat的javabean里的,如果你大小写搞错了,他也无法认识。举例:如keystoreFile如果你写成keystorefile, tomcat就不知道这个文件在哪里,因为你指定的文件路径并没有通过MBean赋值到Tomcat里的javabean。
3. 文件的路径,如果在server.xml没有指定路径,而只指定一个文件名,Tomcat会到它的根目录下去找文件,如果文件不是放在根目录下,也是找不到的。这里的根目录也可以叫“默认目录”。其实还有一个“默认目录”的概念, 如果在server.xml里不指定keystoreFile的话,如下配置:

<Connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"
SSLEnabled="true" maxThreads="150" sslProtocol="TLS"/>


Tomcat会到当前用户的根目录下去找一个叫".keystore"的文件,如果当前用户是Administrator, 就去找文件C:\Documents and Settings\Administrator\.keystore, 如果找不到启动的时候就会出错。这个应该与JVM有关,不知道有没有办法改变这个路径。
4. 如果不是做JSSE的ssl开发的话,可能很少有人用系统参数来指定keyStore和trustStore的。在做JSSE的时候可以用如下配置:

-Djavax.net.ssl.trustStore="E:\JBosss_Tomcat\Tomcat6\Test_SSL\apache-tomcat-6.0.18\conf\root.jks"
-Djavax.net.ssl.trustStorePassword="password"
-Djavax.net.ssl.trustStoreType="JKS"
-Djavax.net.ssl.keyStore="E:\JBosss_Tomcat\Tomcat6\Test_SSL\apache-tomcat-6.0.18\conf\server.p12"
-Djavax.net.ssl.keyStorePassword="password"
-Djavax.net.ssl.keyStoreType="PKCS12"

这样也可以指定这些参数。但是在Tomcat里的trustStore这样指定一点问题都没有,但是keyStore这样,却不行。我不知道是什么原因,如果有知道的朋友可以指出来。
5. 如果有关这些trustStore都不想配置,那可以直接把你的CA导入到JRE里。如果你使用的CA是特别著名的CA, 那么很可能JRE里已经有了,那么这一步不用做任何与trustStore有关的配置。
6. keystoreFile里必须是有私钥信息的,因为建立ssl握手必须要有私钥(有兴趣的话,最好了解一下握手过程, 请见最后附件的示意图。)。可以把p12里的信息证书和私钥导入到jks里(有些CA直接发的是p12格式的证书,而没有直接发给你x.509格式的),这个可能有点麻烦,因为keytool根本就没有提供操作私钥的办法。在测试时你也可以先用keytool生成一个带有证书的jks, 然后把里面的证书导出来。
证书的其他概念也可以参考:http://grandboy.iteye.com/admin/blogs/441778
先总结这么多吧。以后再补充。

附件:
HTTPS通信过程(单身认证)示意图:
http://grandboy.iteye.com/upload/attachment/137160/64234933-b224-37ed-8efd-51036771aaaf.gif
我记得以前专门写过一个文章,详细讲解这个通信过程的。但是现在找不到了,只简单画一个图说明一下。网上也有很多牛人写的这方面文章,只不过信息太多,可能要甄别一下准确性。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-333696-1-1.html 上篇帖子: 如何用jmx管理tomcat运行 下篇帖子: tomcat 连接池数据库密码加密
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表