Tomcat 配置https 踩坑

需求:


公司项目目前是部署在tomcat上用http的形式来访问的,可以通过外网IP和域名加端口号进行访问,然后因为要做个微信小程序的功能,小程序的平台配置里面后台通讯好像又必须是https 的方式访问,于是就准备给tomcat 配置一下https 的访问方式.然后没想到,这个坑整整搞了我三天时间,期间又掉了无数的头发.
环境t : omcat 9.0(http 方式IP和域名都可以正常访问) + 阿里云服务器 + 菜鸟一枚    

现象:

根据网络上的配置,配置完成后不管是在服务器上还是在其他机器上用https+域名用IP访问都是失败但是在本机上用https:localhost和https:127.0.0.0.1的方式可以访问,然后用http的方式是IP和域名都是正常可以访问的;防火墙是关闭的,端口也已经开放了,这就很纳闷了!之前一度怀疑是tomcat的配置有问题,各种百度尝试.也猜测过是不是证书有问题不能自己生成的

配置:

配置方法网络上百度了一堆,基本都是类似的也没有问题,都是通过keytool 的命令生成ssl 证书,然后在tomcat 的service.xml 文件里面增加一个https 的配置.只不过,百度上各种版本有几个问题:

  1. 在生成证书的时候输完密码后有几个问题,有的人说那个姓氏的问题要填你的域名或者IP 不能乱填,但是这个我这边实验是没有影响的.
  2. 还有生成证书的时候会提示你说:[JKS 密钥库使用专用格式。建议使用]这个有人说要处理我没处理也可以;
  3. 然后还有些人配置说要生成那些客户端证书,服务端客户端互相信任,我试了如果只是单纯的访问的话只要做到生成SSL证书 然后配置service.xml 即可,但是访问的时候会提示不信任,忽略即可.

生成SSL证书命令(必须): 红色部分可以自己定义下同

keytool -genkey -v -alias tomcat1 -keyalg RSA -keystore E:/web/keyFile/tomcat1.keystore -validity 36500

生成客户端证书:

keytool -genkey -v -alias mykey  -keyalg RSA -storetype PKCS12 -keystore E:/web/keyFile/mykey.p12

通过上面生成的客户端证书导出可安装的证书:(123456是密码)

keytool -export -alias mykey  -keystore  E:/web/keyFile/mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:/web/keyFile/mykey.cer

客户端证书导入到证书库信任列表

keytool -import -v -file E:/web/keyFile/mykey.cer -keystore E:/web/keyFile/tomcat1.keystore

客户端信任服务器证书

keytool -keystore  E:/web/keyFile/tomcat1.keystore -export -alias tomcat1 -file  E:/web/keyFile/tomcat1.cer 

service.xml配置

<Connector port="9081" 
protocol="HTTP/1.1"            
connectionTimeout="20000"             
maxThreads="150"             
URIEncoding="UTF-8"             
clientAuth="false"             
sslProtocol="TLS"             
SSLEnabled="true"        
scheme="https"
secure="true"
keystoreFile="E:/web/key/tomcat1.keystore"             
keystorePass="123456"             />

 坑:

        按照上面的配置,配置完成后然后尝试通过https+域名+端口/https+外网IP+端口访问.一律失败;
但是通过http+域名+端口/http+外网IP+端口访问正常,然后有人然后各种尝试网上不同的配置差异.然后突然想到试试https+localhost/https+127.0.0.1/方式访问;竟然可以,喜极而泣.虽然没有成功但是至少有希望了.然后开始往这方面查询尝试;关防火墙,开放入站端口,还是不行,最终发现一个阿里云服务器要开通安全组策略配置(端口放行)阿里云服务器(ECS)实战--安全组策略配置(端口放行) - 百度文库

解决:

       生成ssl证书 + service配置 + 端口开放 + 服务器端口映射

       有个免费证书信任处理https://freessl.org/ 没有操作验证,感觉还挺靠谱的有需要可以了解一下.

反思:

  1. 这个排版感觉很干巴.都是大段大段文字看起来都不想看了,需要注意提升一下;
  2. 思路很重要,刚开始在配置上死磕纠结这个配置对不对,证书是不是有问题,一直往这两个方向搜索肯定是没有结果的,从localhost和127.0.0.1的尝试上转变思路去查就可以很快定位到问题
  3. 基础知识点提升,服务器的一些常识,请求http 的常识.
  4. 还有些知识点没有弄清楚,像那个互相信任的,证书的导入的.还有证书不信任的处理方式,单向信任双向信任概念,

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值