2014-12-11 2 views
0

у меня есть некоторые проблемы с подключением TOMCAT в Ssl двухстороннего,Tomcat Двухсторонней SSL доверие определенный сертификат только без импорта сертификата ЦСА

Мне нужно создать веб-сервис, который использует соединение SSL два пути. будет использоваться два разных сертификата: один для подключения ssl и один для подписи для мыла. Правило, сертификат, используемый для подписи мыла, не может использоваться в ssl-соединении и наоборот.

клиент имеет три сертификата: сертификат ssl, сертификат на мыло и собственный сертификат CA, который подписывает сертификат ssl и soap.

проблема связана с подключением ssl, когда я импортирую только сертификат ssl клиента в пользовательский trusttore tomcat, указанный в файле конфигурации tomcat, соединение вызвало исключение сертификата ssl. но когда я попытался импортировать только сертификат CA, ssl-соединение, использующее сертификат SOAP, также было принято tomcat, нарушив правило.

что меня смутило, когда я не указывал какой-либо пользовательский файл доверия, который я предполагаю, что tomcat будет использовать файл cacerts по умолчанию - без импорта какого-либо клиентского сертификата в файл cacerts, соединение было принято tomcat , как это возможно? Я установил «clientAuth» в «true» на настройке tomcat.

Может ли кто-нибудь мне помочь?

Спасибо

ответ

0

Посмотрите на это (http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html#Installing_a_Certificate_from_a_Certificate_Authority). Что необходимо сделать, так это импортировать свой корневой сертификат CA (поскольку сертификат SSL подписан корнем) & SSL-сертификат в хранилище ключей и настроить хранилище ключей для SSL на tomcat (приведенный выше документ описывает шаги). Это должно позаботиться о вашей проблеме SSL.

Теперь, придя к проблеме SOAP, сигнатуры, связанные с SOAP, по существу являются XML-сигнатурами, а Tomcat не обрабатывает то же самое. Эти подписи с этой спецификацией (http://www.w3.org/TR/SOAP-dsig/), которая по существу является расширением. Реализация службы SOAP, например Apache CXF обрабатывает эти подписи (см.: http://cxf.apache.org/docs/ws-security.html). Хотя вы не можете использовать CXF, серверная библиотека фактически выполнит это подписание с использованием предоставленных вами сертификатов (для этого сертификата другое дело).

Что касается последней части вашего вопроса, проверьте, был ли запрос выполнен с использованием SSL, Tomcat обычно не принимает SSL-запросы на 443/8443, если не настроен сертификат.

+0

Благодарим вас за ответ. Я пробовал это, но проблема в том, что когда я импортирую сертификат CA, ssl-соединение с использованием сертификата SOAP, которое запрещено этим правилом, принимается Tomcat. Я просто не понимаю, что является функцией импорта сертификата клиента в доверительный магазин tomcat (а не хранилище ключей), если нам еще нужно импортировать сертификат ЦС, который его также подписал. – rucciva

+0

@rucciva, у Tomcat нет собственного хранилища доверия, по умолчанию используется javax.net.ssl.trustStore, что обычно указывает на хранилище доверия JVM. SSL имеет право запрашивать сертификат клиента также во время рукопожатия, но обычно не используется/не используется. В вашем случае, возможно, вы импортировали сертификат CA в хранилище доверия JVM и включили сертификат клиента для SSL. Теперь в SSL, если клиент предоставляет сертификат и его можно проверить с помощью сертификата CA, тогда устанавливается идентификатор клиента, поэтому сертификат SOAP также будет работать на стороне клиента ... cont – Ironluca

+0

Сделайте это, для теста, не установите значение для trustStoreFile для конфигурации Tomcat SSL (http://tomcat.apache.org/tomcat-5.5-doc/config/http.html), и у вас есть сертификат SSL и сертификат CA в Tomcat 'Key Store' и проверьте. Затем установите значение clientAuth в значение false, то есть отключите аутентификацию клиента. и проверить. – Ironluca