我正在尝试使用使用以下方式生成的自签名证书http://docs.tigase.org/tigase-server/5.3.0/adminguide/#_server_certificates,以启动 XMPP 服务器。但是,服务器没有开始记录下面提到的异常错误logs/tigase-console.log
SSLContextContainer.init() 警告:无法从文件加载证书:certs/tigase.mydomain.crt java.security.KeyStoreException:无法存储非私钥 在 sun.security.provider.JavaKeyStore.engineSetKeyEntry(JavaKeyStore.java:250) 在 sun.security.provider.JavaKeyStore$JKS.engineSetKeyEntry(JavaKeyStore.java:55) 在 java.security.KeyStore.setKeyEntry(KeyStore.java:909) 在 tigase.io.SSLContextContainer.addCertificateEntry(SSLContextContainer.java:199) 在 tigase.io.SSLContextContainer.init(SSLContextContainer.java:421) 在 tigase.io.TLSUtil.configureSSLContext(TLSUtil.java:89) 在 tigase.conf.ConfiguratorAbstract.setProperties(ConfiguratorAbstract.java:815) 在 tigase.conf.ConfiguratorAbstract.setup(ConfiguratorAbstract.java:550) 在 tigase.conf.ConfiguratorAbstract.componentAdded(ConfiguratorAbstract.java:182) 在 tigase.conf.Configurator.componentAdded(Configurator.java:50) 在 tigase.conf.Configurator.componentAdded(Configurator.java:33) 在 tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:115) 在 tigase.server.MessageRouter.addRegistrator(MessageRouter.java:141) 在 tigase.server.MessageRouter.setConfig(MessageRouter.java:696) 在 tigase.server.XMPPServer.start(XMPPServer.java:142) 在 tigase.server.XMPPServer.main(XMPPServer.java:112)
这里似乎出了什么问题。我尝试使用和不使用密码生成私钥,但遇到了同样的异常。
目录中放置的文件certs/
包括client_truststore
、、、、、、和keystore
rsa-keystore
tigase.mydomain.crt
tigase.mydomain.csr
tigase.mydomain.key
tigase.mydomain.pem
truststore
我曾经openssl req -nodes -new -newkey rsa:2048 -keyout tigase.mydomain.key -out tigase.mydomain.csr
生成.key
和.csr
。
我曾经openssl x509 -req -days 365 -in tigase.mydomain.csr -signkey tigase.mydomain.key -out tigase.mydomain.crt
生成.crt
我曾经cat tigase.mydomain.crt tigase.mydomain.key > tigase.mydomain.pem
生成.pem
我在生成密钥和证书时做错了什么吗?
我想要实现的是使用我的自签名证书,因为客户端也属于我。
非常感谢您的帮助。
附言:
我使用的是从 git 存储库中提取的 master 分支中的最新代码。编译此代码后,版本号为 5.3.0
使用开放的 JDK 7
谢谢。
答案1
现在已修复。这是我犯的一个愚蠢的错误。我已将生成的所有文件(tigase.mydomain.crt、tigase.mydomain.csr、tigase.mydomain.key、tigase.mydomain.pem)放入其中。而“tigase.mydomain.crt”是没有任何私钥的证书,也被选中添加到密钥库中,这就是服务器抛出异常的地方。这次我只放入了 tigase.mydomain.pem 文件,该文件也包含私钥。服务器很高兴地接受了我的证书。
抱歉造成混淆。
简而言之,解决方案就是将 .pem 文件放在 certs/ 目录中