Как настроить Apache клиент CXF для использования базы доверенных сертификатов WebSphere? (Получающий “Доверяемый сертификат нашел” исключение.)

Первый, я запущу со сводки. Я использую Apache клиент CXF для связи по SSL с Apache поставщика услуг CXF, который использует самоподписанный сертификат. Я импортировал сертификат в базу доверенных сертификатов WebSphere на клиент-сервере, но я все еще получаю "javax.net.ssl. SSLHandshakeException: SSLHandshakeException, вызов https://somesvcprovider.com/appname/svc/myservice: com.ibm.jsse2.util.h: Никакой доверяемый сертификат не нашел" исключение.

Теперь, вот детали:

у меня есть Apache клиент веб-сервиса CXF, что я настраиваю Spring использования, и клиент развертывается на сервере приложений WebSphere 6.1. Клиент CXF общается с Apache поставщик услуг CXF на другом сервере WebSphere. Коммуникация использует SSL.

поставщик услуг использует самоподписанный сертификат. Я импортировал сертификат поставщика в базу доверенных сертификатов WebSphere на клиент-сервере через административную консоль. Я выполнил это путем движения в сертификат SSL и управление ключами> конфигурации SSL> NodeDefaultSSLSettings> Базы ключей и сертификаты> NodeDefaultTrustStore> сертификаты Подписывающего лица; затем я использовал инструмент "Retrieve from port" для импорта сертификата.

Однако я все еще получаю эту ошибку при попытке связаться с поставщиком услуг: "javax.net.ssl. SSLHandshakeException: SSLHandshakeException, вызов https://somesvcprovider.com/appname/svc/myservice: com.ibm.jsse2.util.h: Никакой доверяемый сертификат не найден".

конфигурационный файл Spring следующие:


    
        
        
        
    
    
    
        
            
                
                classpath:spring.${my.env}.properties
            
        
    
    
    
        
    

Как показано выше, клиент CXF введен через метод set Spring. Код для контакта с сервисом ниже:

List formNames = client.retrieveNames(formIdsList);

кроме того, я не знаю, связано ли это, но никакие доверительные менеджеры не возвращаются, когда я осматриваю объект TLSClientParameters на клиенте CXF во времени выполнения. Код, чтобы сделать контроль ниже:

// Get the trust managers for this client.
Client proxy = ClientProxy.getClient(client);
HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
TLSClientParameters tls = conduit.getTlsClientParameters();
TrustManager[] trustManagers = tls.getTrustManagers();  // trustManagers is null

там что-либо еще, что я должен сделать, чтобы заставить Apache клиент CXF доверять самоподписанному сертификату?

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

Спасибо!

10
задан Donal Fellows 21 November 2011 в 14:56
поделиться