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

[经验分享] tomcat https 证书配置

[复制链接]

尚未签到

发表于 2018-12-2 11:51:37 | 显示全部楼层 |阅读模式
  Tomcat配置HTTPS的文章到处都有,过程也比较简单,随后文中会转一段过来。
  但对于启用APR情况下报异常“java.lang.Exception: Connector attribute SSLCertificateFile must be defined when  using SSL with APR”的解决方法上处理的都比较偷懒,通常都是把APR注释掉不启用APR。
  做为一个文艺青年兼软件开发工程师(偶吐),我有责任深入学习仔细研究完美解决这个问题(偶再吐)。
  资料转载【TOMCAT配置HTTPS】
  ################################################################
二、创建证书
  啰嗦几句:证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证,中文官方网站:http://www.verisign.com/cn/
  用JDK自带的keytool工具生成证书:
keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey  无图不给力,有图有真相:
DSC0000.gif

  具体的输入项图片中都有说明,有一点我要解释一下;在输入完密码后提示输入域名是我输入的是sso.wsria.com,其实这个域名是不存在的,但是我为了演示所以虚拟了这个域名,技巧在于修改
C:\Windows\System32\drivers\etc\hosts  添加内容如下:
127.0.0.1  sso.wsria.com  这样在访问sso.wsria.com的时候其实是访问的127.0.0.1也就是本机
  严重提醒:提示输入域名的时候不能输入IP地址
三、导出证书
D:\keys>keytool -export -file d:/keys/wsria.crt -alias wsria -keystore d:/keys/wsriakey  特别提示:如果提示:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect  那么请输入密码:changeit
  来点颜色:
DSC0001.gif

  至此导出证书完成,可以分发给应用的JDK使用了,接下来讲解客户端的JVM怎么导入证书。
四、为客户端的JVM导入证书
keytool -import -keystore D:\tools\jdk\1.6\jdk1.6.0_20\jre\lib\security\cacerts -file D:/keys/wsria.crt -alias wsria  来点颜色瞧瞧:
DSC0002.gif

特别说明
  D:\tools\jdk\1.6\jdk1.6.0_20\jre\lib\security -- 是jre的目录;密码还是刚刚输入的密码。至此证书的创建、导出、导入到客户端JVM都已完成,下面开始使用证书到Web服务器中,本教程使用tomcat。
五、应用证书到Web服务器-Tomcat
  说是应用起始做的事情就是启用Web服务器(Tomcat)的SSL,也就是HTTPS加密协议,为什么加密我就不用啰嗦了吧…… 准备好一个干净的tomcat,本教程使用的apache-tomcat-6.0.29 打开tomcat目录的conf/server.xml文件,开启83和87行的注释代码,并设置keystoreFile、keystorePass修改结果如下:
  ?
12参数说明:

  •   keystoreFile:在第一步创建的key存放位置
  •   keystorePass:创建证书时的密码
  好了,到此Tomcat的SSL启用完成,现在你可以启动tomcat试一下了,例如本教程输入地址:https://sso.wsria.com:8443/ 打开的是:
DSC0003.gif

  好的,那么我们点击“继续浏览此网站(不推荐)。现在进入Tomcat目录了吧,如果是那么你又向成功迈进了一步。
  ################################################################
  来自http://www.kafeitu.me/2010/11/05/sso-cas-full-course.html。
  文章写的很好,也很细致。
  嗯。好了,问题来了。
  当我启动Tomcat时发现控制台报错如下:
  Java代码

  •   2012-5-16 13:10:37 org.apache.catalina.core.AprLifecycleListener init
  •   信息: Loaded APR based Apache Tomcat Native library 1.1.23.
  •   2012-5-16 13:10:37 org.apache.catalina.core.AprLifecycleListener init
  •   信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
  •   2012-5-16 13:10:37 org.apache.coyote.AbstractProtocol init
  •   信息: Initializing ProtocolHandler ["http-apr-8080"]
  •   2012-5-16 13:10:37 org.apache.coyote.AbstractProtocol init
  •   信息: Initializing ProtocolHandler ["http-apr-8443"]
  •   2012-5-16 13:10:37 org.apache.coyote.AbstractProtocol init
  •   严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"]
  •   java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
  •   at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:484)
  •   at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566)
  •   at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417)
  •   at org.apache.catalina.connector.Connector.initInternal(Connector.java:956)
  •   at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  •   at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
  直接Google,很多答案都是不启用APR,修改conf/server.xml注释掉下面一段
  Xml代码

  •   
  •   
  例如:http://tdp100.iteye.com/code?tag=tomcat+https
  但这样做将失去APR库的价值,Tomcat性能必然下降(APR库作用见此处http://wenson.iteye.com/blog/382738)
  让我们打开Tomcat的文档webapps/docs/apr.html,其中讲到
      
  SSLCertificateFile属性好理解,是指证书文件,就是用keytool导出的那个。
  而SSLCertificateKeyFile应该是指私钥,这个东西从哪里来呢,继续找资料。
  在这里:http://stackoverflow.com/questions/150167/how-do-i-list-export-private-keys-from-a-keystore
  关键是这一段:
keytool -importkeystore -srckeystore keystore.jks \    -destkeystore intermediate.p12 -deststoretype PKCS12  Next, use OpenSSL to do the extraction to PEM:
openssl pkcs12 -in intermediate.p12 -out extracted.pem -nodes  先把keystore转换为pkcs12格式,然后使用openssl工具导出私钥即可。
  openssl 工具可以从这里下载:http://gnuwin32.sourceforge.net/packages/openssl.htm
  ohYeah! 搞定了。
  注意 :不同版本号对应配置不相同
  tomcat 6 配置



运维网声明 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-642348-1-1.html 上篇帖子: jakarta-tomcat-connectors-1.2.15-src安装 下篇帖子: tomcat6之使用NIO-J2EE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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