我正尝试使用使用http://docs.tigase.org/tigase-server/5.3.0/adminguide/#_server_certificates生成的自签名证书来启动XMPP服务器。 但是,服务器不会在logs/tigase-console.log中logs/tigase-console.log下面提到的exception错误
SSLContextContainer.init()警告:无法从文件加载证书:certs / tigase.mydomain.crt
java.security.KeyStoreException:不能存储非PrivateKeys
在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
我在生成密钥,证书方面做错了什么?
我想实现的是使用我的自签名证书,因为客户端也属于我。
非常感谢您的帮助。
PS:
我正在使用从git仓库中取出的master分支的最新代码。 编译这个代码给出版本= 5.3.0
使用开放的JDK 7
谢谢。
这现在已经修复了。 这是我的一个愚蠢的错误。 我已经把所有的文件(tigase.mydomain.crt,tigase.mydomain.csr,tigase.mydomain.key,tigase.mydomain.pem)生成。 而“tigase.mydomain.crt”是没有任何私钥的证书也被拿起来添加到密钥库,这是服务器抛出exception的地方。 这一次我只是把具有私钥的tigase.mydomain.pem文件。 服务器很乐意接受我的证书。
对于混淆抱歉。
简而言之,解决方法是将.pem文件放在certs /目录中