关于tomcat配置SSL协议,生成密钥对以及证书出现问题,请问怎么解决?
命令如下
CMD管理员身份运行
进入tomcat7的目录
新建密钥对
Keytool -genkey -alias tomcat_a -keyalg RSA -storepass changeit -keystore server.keystore -validity 7
除了姓氏 填入localhost 其他全部是直接回车
第一步是导出证书,
Keytool -export -trustcacerts -alias tomcat_a -file server.cer -keystore server.keystore -storepass changeit
第二步是导入到证书信任库
Keytool -import -trustcacerts -alias tomcat_a -file server.cer -keystore C:/"Program Files"/Java/jdk1.7.0_67/jre/lib/security/cacerts -storepass changeit
以上命令全部执行成功
其中秘钥库口令写在命令中是:changeit
秘钥口令直接回车与秘钥库口令相同也是:changeit
文件也有了。
配置tomcat 的server.xml
添加:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:/apache-tomcat-7.0.77-ssl/server.keystore"
truststoreFile="C:/Program Files/Java/jdk1.7.0_67/jre/lib/security/cacerts"
keystorePass="changeit"
/>
之后启动tomcat报错:
放大:
Caused by: java.security.UnrecoverableKeyException: Cannot recover key
at sun.security.provider.KeyProtector.recover(KeyProtector.java:328)
at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:138)
at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:55)
at java.security.KeyStore.getKey(KeyStore.java:1011)
at sun.security.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:133)
at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:70)
at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:256)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:645)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:574)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:495)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:715)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:452)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
... 13 more
请问怎么解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已经解决,我电脑里安装了两个版本的JDK。
JDK7 和 JDK8
系统环境变量里配置的是8,
7是用来给eclispe中添加开发环境用的。
这里SSL命令里设置JDK的以及问题中tomcat的server.xml 中配置的都是JDK7,都改成JDK8就可以了。
现在报了另外一个错误(学习http://blog.csdn.net/xuxuchuan/article/details/54924933#reply)配置cas3.5.2:
上面错误解决,因为tomcat 的原因,重新解压一份新的tomcat,将证书复制进去,将server.xml配置项复制进去,放入cas.war即可