Проверка подлинности клиента SSL вызывает ошибку 403.7 из IIS - PullRequest
1 голос
/ 07 октября 2009

Я пытаюсь подключиться к веб-службе (не находящейся под моим контролем), настроенной для аутентификации пользователей через сертификаты клиента SSL. У меня есть действующий сертификат в формате PKCS12, содержащий сертификат клиента и связанный с ним закрытый ключ. Сертификат выдан центром сертификации, принятым поставщиком веб-услуг.

Установка сертификата и попытка доступа к закрытой области в различных браузерах дает следующие результаты:

  • IE6 - работает нормально, и я могу получить WSDL

  • IE7 - запрашивает сертификат, но затем завершается неудачно с 403,7 с сервера

  • Firefox3 - Задайте запрос, но не получите подсказку и не получите 403.7

  • Safari 4 - Сертификат установлен в связку ключей, но без приглашения и 403,7

Кроме того, при попытке программного доступа к веб-службе (Java) происходит сбой с тем же кодом ошибки 403.7.

Странно, что это работает в IE6, но ни в каком другом браузере, что мне не хватает? Нужно ли включать полную цепочку сертификатов CA в файл PKCS12?

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Это действительно работает! Если вас смущают параметры -inkey и -in, это закрытый ключ и сертификат из файла p12. Вы можете конвертировать файл p12 в формат pem с помощью:

openssl pkcs12 -in file.p12 -clcerts -out file.pem

и используйте приведенную выше команду только с "-in file.pem".

Кроме того, вы можете импортировать сертификат корневого ЦС в хранилище доверенных сертификатов. Вот описание того, как это сделать: http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl,, и вам не нужно вручную копировать сертификаты. После установки сертификата используйте указанную выше команду без "-CAfile chain.pem".

1 голос
/ 08 октября 2009

Хорошо, получил это работает. Ответ - да, мне нужно было включить все промежуточные сертификаты CA в файл PKCS12. Я объединил все промежуточные сертификаты CA плюс сертификат корневого CA в файле chain.pem, затем выполнил следующую команду:

openssl pkcs12 -export -chain -CAfile chain.pem -in cert.pem -inkey key.pem -out cert.p12
...