Настройка WebSphere 8 SSL (HTTPS между приложениями)

У меня есть два веб-приложения, которые я устанавливаю в WAS 8, и им необходимо взаимодействовать друг с другом с помощью HTTPS (возможно, это не лучший способ взаимодействия в WAS, но эти приложения предоставляются как есть, и я обычно запускаю их в Tomcat, который не вызывает проблем).

В Tomcat я просто устанавливаю сертификат для сервера, затем сохраняю сертификат клиента из веб-браузера и добавляю его в JVM, выполняющую Tomcat. Я должен иметь информацию о сертификате как в хранилище ключей, так и в хранилище доверия, поскольку сервер tomcat действует как клиент и сервер (поскольку это связь между приложениями).

Мне нужно настроить что-то подобное в WAS. До сих пор я заходил в консоль управления и импортировал сертификат по умолчанию из хранилища ключей по умолчанию в хранилище доверия по умолчанию.

После перезапуска сервера и попытки установить связь между приложениями я получаю следующее исключение:

R javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
[5/22/13 8:05:05:353 EDT] 000000ee SystemErr     R  at com.ibm.jsse2.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:167)
[5/22/13 8:05:05:353 EDT] 000000ee SystemErr     R  at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
[5/22/13 8:05:05:353 EDT] 000000ee SystemErr     R  at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:390)
[5/22/13 8:05:05:353 EDT] 000000ee SystemErr     R  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
[5/22/13 8:05:05:353 EDT] 000000ee SystemErr     R  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
[5/22/13 8:05:05:353 EDT] 000000ee SystemErr     R  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
[5/22/13 8:05:05:354 EDT] 000000ee SystemErr     R  at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:562)
[5/22/13 8:05:05:354 EDT] 000000ee SystemErr     R  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
[5/22/13 8:05:05:354 EDT] 000000ee SystemErr     R  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
[5/22/13 8:05:05:354 EDT] 000000ee SystemErr     R  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
[5/22/13 8:05:05:354 EDT] 000000ee SystemErr     R  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)

Обновление/дополнительные данные:

Я добавил несколько аргументов отладки ssl для виртуальной машины и получил следующее:

[5/22/13 8:40:46:002 EDT] 00000094 SystemOut     O %% Invalidated:  [Session-10, SSL_RSA_WITH_RC4_128_MD5]
[5/22/13 8:40:46:002 EDT] 00000094 SystemOut     O pool-3-thread-1, SEND TLSv1 ALERT:  fatal, description = certificate_unknown
[5/22/13 8:40:46:002 EDT] 00000094 SystemOut     O pool-3-thread-1, WRITE: TLSv1 Alert, length = 2
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, READ: TLSv1 Alert, length = 2
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, RECV TLSv1 ALERT:  fatal, certificate_unknown
[5/22/13 8:40:46:003 EDT] 00000094 SystemOut     O pool-3-thread-1, called closeSocket()
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, called closeOutbound()
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, closeOutboundInternal()
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, SEND TLSv1 ALERT:  warning, description = close_notify
[5/22/13 8:40:46:003 EDT] 00000094 SystemOut     O pool-3-thread-1, handling exception: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: 
    java.security.cert.CertPathValidatorException: The certificate issued by CN=rothbard, OU=Root Certificate, OU=rothbardNode01Cell, OU=rothbardNode01, O=IBM, C=US is not trusted; internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, WRITE: TLSv1 Alert, length = 2
[5/22/13 8:40:46:003 EDT] 00000094 SystemOut     O pool-3-thread-1, IOException in getSession():  javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: 
    java.security.cert.CertPathValidatorException: The certificate issued by CN=rothbard, OU=Root Certificate, OU=rothbardNode01Cell, OU=rothbardNode01, O=IBM, C=US is not trusted; internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, called closeInbound()
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, closeInboundInternal()
[5/22/13 8:40:46:003 EDT] 0000005c SystemOut     O WebContainer : 5, closeOutboundInternal()
[5/22/13 8:40:46:004 EDT] 00000094 SystemOut     O pool-3-thread-1, called close()
[5/22/13 8:40:46:004 EDT] 00000094 SystemOut     O pool-3-thread-1, called closeInternal(true)

ДОПОЛНИТЕЛЬНО: я воспроизвел проблему или, по крайней мере, аналогичную проблему вне WAS с использованием http-клиента, в котором, возможно, и заключается реальная проблема. Таким образом, вопрос может заключаться в том, как правильно заставить http-клиент использовать связанные сертификаты от WAS.


person sixbitproxywax    schedule 22.05.2013    source источник


Ответы (1)


Моя конкретная проблема в конечном итоге была вызвана тем фактом, что мне нужно было импортировать всю цепочку сертификатов в доверенные сертификаты JVM, а не только сертификат только для веб-приложения.

person sixbitproxywax    schedule 28.05.2013