Веселье:вызов веб-службы SSL SOAP с клиентским сертификатом
-
06-09-2019 - |
Вопрос
Сценарий основан на вызове внешнего веб-сервиса SSL SOAP из Mirth.Для работы веб-службы требуется SSL / TLS-соединение вместе с клиентским сертификатом.
Намерение состоит в том, чтобы использовать встроенное назначение отправителя SOAP для вызова удаленной защищенной веб-службы и каким-то образом включить этот сертификат клиента.
Я понимаю, что сначала вам нужно установить этот клиентский сертификат в среду выполнения Java.Это может находиться в хранилище сертификатов среды выполнения Java или в certstore Jetty.
Платформа:
- Windows 2003 с пакетом обновления 2
- Веселье 1.8
- Java jre1.5.0_09
Вопрос:какие шаги настройки (Mirth, хранилища сертификатов JRE и т.д.) Вы бы предложили для успешного включения отправителем Mirth SOAP клиентского сертификата (*.cer) при вызове веб-службы, защищенной SSL?
Решение 2
Mirth 1.8 не может отправить сертификат клиента при вызове веб-службы SOAP.
Другие советы
Среда выполнения Java, или, более конкретно, поставщик Sun JSSE, предоставит сертификат клиента, если заданы некоторые системные свойства.Вы можете прочитать подробности в Справочное руководство по JSSE, но важными свойствами являются javax.net.ssl.keyStore
и javax.net.ssl.keyStorePassword
.
У такого подхода есть несколько недостатков.Во-первых, установка пароля хранилища ключей в качестве системного свойства делает его доступным для любого кода, запущенного в этом процессе, хотя этим можно управлять, если SecurityManager
установлен.Во-вторых, эти настройки будут использоваться для любых SSL-сокетов, созданных с помощью параметра "по умолчанию". SSLContext
.Если вам нужны разные учетные данные для разных конечных точек, вам понадобится решение, ориентированное на Mirth.
В вопросе не была указана отправная точка, но если начинать с нуля, то самый простой подход - создать новое хранилище ключей Java (формат "JKS") и сгенерировать новую пару ключей и CSR.После отправки CSR в центр сертификации и получения сертификата обратно импортируйте его в то же хранилище ключей.Это хранилище ключей готово к использованию.
Если сертификат уже доступен, он, скорее всего, хранится вместе с соответствующим закрытым ключом в формате PKCS #12 (файл.p12 или .pfx).Они могут быть использованы непосредственно Java-приложением, но javax.net.ssl.keyStoreType
для свойства необходимо будет установить значение "PKCS12"
Я немного опоздал с этим, но на самом деле есть вероятность, что это возможно.Отправив несколько конфигурационных параметров в JVM, вы могли бы заставить базовый движок SOAP переключиться на HTTPs и предоставить соответствующий сертификат.
обратитесь к этому вопросу для получения подробной информации о том, какие параметры следует задать для настройки виртуальной машины
Проверка подлинности клиентского сертификата Java HTTPS
вы заметите, что есть немало вещей, о которых нужно позаботиться.Обычно HTTPs и проверка подлинности клиента должны "просто работать", как только вы соответствующим образом настроили свои сертификаты.НО есть некоторые серверы, которые не очень дружелюбны к клиентам в стиле B2B, так что вам нужно быть начеку.
Используя JDK 6_21 и несколько настроек с сертификатом, я смог заставить один из этих серверов работать нормально, но с нашей стороны это было долго и болезненно из-за того, что для правильной настройки на сервере требуется около 15 минут.
вот еще один вопрос, который касается именно этой проблемы (аутентификация на стороне клиента по отношению к недружественным серверам).
Проверка подлинности клиента SSL, вызывающая ошибку 403.7 от IIS