Использование самозаверяющих сертификатов с сервером Tigase XMPP
Я пытаюсь использовать самозаверяющий сертификат, сгенерированный с использованием http://docs.tigase.org/tigase-server/5.3.0/adminguide/, для запуска сервера XMPP. Тем не менее, сервер не начинает регистрировать нижеуказанную ошибку исключения в logs/tigase-console.log
SSLContextContainer.init() ВНИМАНИЕ: Невозможно загрузить сертификат из файла: certs/tigase.mydomain.crt java.security.KeyStoreException: не может хранить не PrivateKeys at sun.security.provider.JavaKeyStore.engineSetKeyEntry(JavaKeyStore.java:250) at sun.security.provider.JavaKeyStore$JKS.engineSetKeyEntry(JavaKeyStore.java:55) в java.security.KeyStore.setKeyEntry(KeyStore.java:909) at tigase.io.SSLContextContainer.addCertificateEntry(SSLContextContainer.java:199) at tigase.io.SSLContextContainer.init(SSLContextContainer.java:421) at tigase.io.TLSUtil.configureSSLContext(TLSUtil.java:89) в tigase.conf.ConfiguratorAbstract.setProperties(ConfiguratorAbstract.java:815) at tigase.conf.ConfiguratorAbstract.setup(ConfiguratorAbstract.java:550) at tigase.conf.ConfiguratorAbstract.componentAdded(ConfiguratorAbstract.java:182) на tigase.conf.Configurator.componentAdded(Configurator.java:50) на tigase.conf.Configurator.componentAdded(Configurator.java:33) at 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:
Я использую последний код из ветки master, который я извлек из репозитория git. Компиляция этого кода дает версию = 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/