1

私たちのアプリケーションでは、データベースに保存されている URL と信頼できる SSL 証明書に基づいて、いくつかの Web Servervices を呼び出す必要があります。これらの証明書は自己署名されていますが、WebLogic トラストストアに追加することはできません。これは双方向 SSL ですが、サーバーはリモート証明書を拒否します。

これを行う正しい方法は何ですか?

(質問の残りの部分では、既に試したことについて説明します。)


WebLogic 10g では、次のことを行っていました。

    WlsSSLAdapter adapter = new WlsSSLAdapter();
    try {
        // setup for client certificate
        adapter.setKeystore(…);
        adapter.setClientCert(…);
        // setup for accepting the remote certificate
        adapter.setTrustManager(new TrustManager() {
            @Override
            public boolean certificateCallback(X509Certificate[] paramArrayOfX509Certificate, int paramInt) {
                return paramArrayOfX509Certificate[0] == expectedCertificate;
            }
        });
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    ((weblogic.wsee.jaxrpc.StubImpl) servicePort)._setProperty(weblogic.wsee.jaxrpc.WLStub.SSL_ADAPTER, adapter);

ただし、WebLogic 11g では、TrustManager(デバッガーを使用して確認した) が呼び出されても、WebLogic は証明書を拒否するようです。

<validationCallback: validateErr = 16> 
<  cert[0] = Serial number: 9232073310112809071929676484517784211
    Issuer:C=US, ST=MyState, L=MyTown, O=MyOrganization, OU=FOR TESTING ONLY, CN=mestoudi2
    Subject:C=US, ST=MyState, L=MyTown, O=MyOrganization, OU=FOR TESTING ONLY, CN=mestoudi2
    Not Valid Before:Tue Nov 01 14:33:31 CET 2011
    Not Valid After:Sun Nov 02 14:33:31 CET 2031
    Signature Algorithm:MD5withRSA
    > 
<weblogic user specified trustmanager validation status 16> 
<Certificate chain received from mestoudi2 - 10.142.0.23 was not trusted causing SSL handshake failure.> 
<Validation error = 16> 
<Certificate chain is untrusted> 
<SSLTrustValidator returns: 16> 
<Trust status (16):  CERT_CHAIN_UNTRUSTED> 
<NEW ALERT with Severity: FATAL, Type: 42
    java.lang.Exception: New alert stack
      at com.certicom.tls.record.alert.Alert.<init>(Unknown Source)
      at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert(Unknown Source)
      at com.certicom.tls.record.handshake.ClientStateReceivedServerHello.handle(Unknown Source)
…

最初の違いは、 weblogic ユーザーが trustmanager validation status 16 を指定した行で発生すると思います。ここで、WebLogic 10g では値が 16 ではなく 0 でした。

WebLogic 管理コンソールで [Use JSSE SSL] をオンにすると (実装がcom.sun.net.sslではなく に切り替わりますcom.certicom.tls)、TrustManagerはまったく呼び出されません。

また、次を使用してスタブに渡された a に設定した a をTrustManager実装することにより、を構成しようとしました。javax.net.ssl.X509TrustManagerweblogic.wsee.connection.transport.https.HttpsTransportInfo

((weblogic.wsee.jaxrpc.StubImpl) servicePort)._setProperty(TRANSPORT_INFO, transportInfo);

ただし、どちらも呼び出されませんが、たとえばプロキシの設定には機能します。clientgen Ant タスク ( weblogic.wsee.tools.anttasks.ClientGenTask) を使用してスタブを生成しています。

4

0 に答える 0