关于tomcat配置SSL协议,生成密钥对以及证书出现问题,请问怎么解决?

发布于 2021-12-06 07:56:41 字数 3016 浏览 989 评论 1

命令如下 

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情栀口红 2021-12-08 23:22:08

已经解决,我电脑里安装了两个版本的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:

java.io.FileNotFoundException: D:cas-chenjiecas.properties (系统找不到指定的文件。)>

 上面错误解决,因为tomcat 的原因,重新解压一份新的tomcat,将证书复制进去,将server.xml配置项复制进去,放入cas.war即可

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文