Столкнулся с проблемой, ответ на которую искал около пары недель :). Есть j2ee web application, которое работает с Web Service другого сервера (реализованный вообще на с++) через SSL (https). Если оба этих программных компонента находятся на одной машине, то в броузере все быстро и гладко, однако, так как, приходится собирать, запускать и тестировать web часть (под Apache Tomcat 6) на локальной рабочей машине, то была обнаружена эта беда - низкая скорость работы SOAP запросов по https. В ходе расследования, было например выясненно, что другие ssl клиенты (не Java) соединяются нормально. Были даже попытки использовать утилиту gdb для отладки сервера, слава богу, вовремя стало ясно, что дело все-таки не в нем. Круг подозреваемых сократился до axis2 библиотеки и JSSE слоя клиента (web части). То что сертификат был от другого сервера я обнаружил сразу (в ходе исследования сертификатов сервера и cacerts JRE), но оставил этот факт "на потом", не придав значения. Однако после недельных изысканий, чтения форумов и попыток дебага библиотеки, я наткнулся на одно хорошее сообщение
Nagareshwar Talekar wrote...
> 1) Check if certificate is not expired.
> 2) Common name on the certificate matches the DNS name
> of the server.
> 3) Checks if the CA is trused.
>
> I don't know how to perform the check for 3rd step. How can we ensure
> that CA is trusted? One of my colleague told that I have to
> store all trusted
> root certificates and then compare incoming certificate with
> existing ones..
И все-таки решил проверить догадку - несовпадающие CN и DNS имя сервера. Это стало предпоследним средством, на которое я уже рассчитывал. Последним средством был бы blind ssl клиент :)