Сценарий: вызов клиентского веб-сервиса по SSL (https) с взаимной аутентификацией SSL. Различные URL-адреса и сертификаты конечных точек службы (хранилище ключей и хранилище доверенных сертификатов) для среды тестирования и рабочей среды. Как в тестовой, так и в производственной среде работает кластер tomcat / JBoss. Производственная среда имеет балансировку нагрузки / BigIP, работает на машинах Blade и Non-Blade.
Truststore устанавливается (используя -Djavax.net.ssl.trustStore = значение ) при запуске. Keystore устанавливается с помощью System.setProperty ("javax.net.ssl.keyStore", " value ") в коде Java. Вызов веб-сервиса сделан с использованием Axis2. Все отлично работает в тестовой среде, но когда мы перешли в производственную среду (6 серверов), кажется, что сертификаты не пересылаются для рукопожатия. Вот что мы сделали:
- в тестовой среде рукопожатие с использованием тестовых версий сертификатов работало все время, без отладки ssl
- подтвердил в тестовой среде, что рукопожатие с производством клиента
конечная точка успешна (производственные сертификаты,
и наши и их, все в порядке) -
это было сделано с помощью
-Djavax.net.debug = рукопожатия, SSL
- подтвердил, что ошибка возникает на всех 6 производственных серверах
- взял один сервер из кластера, включил отладку ssl для
только что (с перезапуском), нажмите
это напрямую, рукопожатие работает!
- переключился на другой сервер без включенной отладки,
возникает ошибка рукопожатия
- включил отладку на этом втором сервере (с перезапуском), попал прямо на него, рукопожатие работает!
Судя по доказательствам, кажется, что включенная отладка заставляет сертификаты быть правильно извлечены / переданы, хотя это не имеет смысла! Интересно, заставит ли система как-то включить отладку обратить внимание на вызов System.setProperty и игнорировать его в противном случае. Однако в локальной и тестовой средах рукопожатие работало без включенной отладки.
Возможно, мне нужно настроить хранилище ключей при запуске сервера, как я настраиваю хранилище доверенных сертификатов? Я избегал этого, потому что хранилище ключей будет отличаться для каждой из наших тестовых сред (16 из них).