SSL рукопожатие между двумя веб-приложениями - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть webapp-1, развернутый на SUNWappserver, который требует двухсторонней аутентификации SSL. Я могу написать для него java-клиент-1, и он прекрасно работает.

Однако, когда я пишу клиент-2 для webapp-1 как веб-сервис (вместо отдельной Java-программы), у меня возникают проблемы.

Я развертываю клиент-2 на сервере Jetty-8. Во время SSL-рукопожатия Jetty сначала получает сертификат от SUNWappserver (что нормально: найден доверенный сертификат), затем Jetty получает CertificateRequest от SUNWappserver (вместе с центрами сертификации). Однако Jetty просто отвечает пустой цепочкой сертификатов.

.
.
*** CertificateRequest
Cert Types: RSA, DSS
Cert Authorities:
****<CNs removed from here>****
*** ServerHelloDone
*** Certificate chain
***
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1
.
.

Я не уверен, что там происходит. Есть ли какая-то настройка в конфигурации jetty-ssl.xml, которую мне нужно включить, чтобы она отвечала цепочкой сертификатов? Вот варианты, которые я использую сейчас

<Set name="KeyStore"><SystemProperty name="jetty.home" default="." />/server-certs/keyStore.jks</Set>
<Set name="KeyStorePassword">$PASS</Set>
<Set name="KeyManagerPassword">$PASS</Set>
<Set name="TrustStore"><SystemProperty name="jetty.home" default="." />/server-certs/trustStore.jks</Set>
<Set name="TrustStorePassword">$PASS</Set>
<Set name="certAlias">$CORRECT_ALIAS</Set>
<Set name="wantClientAuth">true</Set>

Мои trustStore и keyStore работают нормально, так как они работают, когда я использую клиент в качестве автономного Java-приложения (вместо развертывания на сервере Jetty). При запуске сервера Jetty Jetty правильно читает хранилище ключей и trustStore. Я также попытался указать -Djavax.net.ssl.trustStore и т. Д. В качестве параметров jvm при запуске сервера Jetty.

1 Ответ

0 голосов
/ 14 сентября 2011

Просто разобрался, что происходит.Мой клиент-2, который я развертывал на сервере Jetty, был клиентом cxf.Оказалось, что в дополнение к настройке keyStore и trustStore в jetty-ssl.xml мне нужно настроить его также и для cxf (в java-коде или с помощью cxf.xml)

В противном случае,клиент (развернутый на сервере Jetty) не выдавал никаких сообщений об ошибках (например, cxf keyStore not found и т. д. и т. д.) и просто отправлял пустую цепочку сертификатов обратно на сервер SUNWappserver.Некоторое сообщение было бы полезно для выяснения причины.

В связанной заметке мы также должны установить следующее в jetty-ssl.xml.

<Set name="needClientAuth">true</Set> 

В противном случае, даже если клиент (который подключается к серверу Jetty) отправляетпустое значение неверного сертификата для сервера Jetty, сервер проигнорирует и не выдаст сообщение об ошибке.

...