У меня есть 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.