Я вызываю стороннюю веб-службу с запросами SOAP. Эта служба требует, чтобы я подписывал свои запросы SOAP цифровой подписью. Относительно Как купить сертификат X.509 для подписи цифровых полезных данных вопрос, я купил сертификат подписи электронной почты от Entrust.
Я получил закрытый ключ от Entrust в .p12
формат. Я использовал диспетчер сертификатов Windows, чтобы извлечь из него открытый ключ. Я доставил этот открытый ключ поставщику веб-услуг. Я не мог использовать закрытый ключ непосредственно в .p12
формат в моей программе, поэтому я использовал openssl, чтобы преобразовать его в .pem
формат. Строго говоря, я использовал такую команду: openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes
.
Я использую преобразованный закрытый ключ, открытый ключ и парольную фразу для создания подписи в заголовке моего SOAP-запроса, однако при отправке запроса служба выдает мне ошибку «Не удалось проверить токен безопасности». Я не вижу какой-либо конкретной ошибки, так как в ней отображаются только данные сертификата.
Что-то я делаю не так?
РЕДАКТИРОВАТЬ: Возможно, проблема связана с моим сертификатом. Я обнаружил, что алгоритм хеширования моего сертификата - SHA-256, хотя мой клиент SOAP поддерживает только SHA-1, а также сторонний поставщик услуг.