2017-01-20 22 views
0

Я пытаюсь защитить свое приложение eXist-db, а это значит, что единственный порт, который я должен оставить открытым, должен быть 8443 (для использования приложения WebDAV и admin). Это базовый безопасный порт eXist-db, открытый с момента установки. Он использует самозаверяющий сертификат. У меня нет проблем с заменой сертификата по умолчанию новым, но проблема в том, что я не могу это сделать с сертификатом, подписанным CA.Как правильно настроить SSL в Jetty с сертификатом CA?

Я пробовал:

  1. sudo rm eXist-db/tools/jetty/etc/keystore
  2. cat ServerCertificate.crt Alpiro-TrustProvider-IntermediateCA.crt Root.cer > cert-chain.txt
  3. Я очистил плохие концы линий и проверить каждый начинает сертификат на новой строке.
  4. openssl pkcs12 -export -inkey my-app.key -in cert-chain.txt -out my-app.pkcs12
  5. keytool -importkeystore -srckeystore my-app.pkcs12 -srcstoretype PKCS12 -destkeystore eXist-db/tools/jetty/etc/keystore

После перезагрузки я проверил соединение с: openssl s_client -connect xx.xx.xxx.xxx:8443 и все, кажется, хорошо. Я вижу, что есть мой доверенный сертификат, и соединение (handshake) просто работает. Однако браузеры все еще утверждают, что это не надежное соединение.

Когда я пытаюсь что-то проверить по протоколу HTTPS с помощью XQuery, он бросает:

java.security.cert.CertificateException: No subject alternative names matching IP address xx.xx.xxx.xxx found … 

ответ

0

Решение довольно тривиально. Проблема заключалась в том, что я пытался получить доступ к сайту через IP, а не через полное доменное имя. Сертификаты связаны с именами доменов, а не с IP-адресами!