Проблема с сертификатом 403.7 - PullRequest
3 голосов
/ 22 марта 2011

Итак, у меня есть следующая система: есть клиентское приложение, которое запрашивает сервис следующим образом:

blar.ServiceSecurity wsSecurity = new blar.ServiceSecurity();
wsSecurity.Url = this.tURL + "Security.asmx";
CookieContainer cc = new CookieContainer();
wsSecurity.CookieContainer = cc;
wsSecurity.ClientCertificates.Add(X509Certificate.CreateFromCertFile(certPath));

blar.LoginResult lr = wsSecurity.Login(login, password);

тогда веб-сервис по методу this.tURL + "Security.asmx" Login должен получить этот ClientCertificate (certPath) из:

Context.Request.ClientCertificate.Certificate;

и сделай что-нибудь с этим.

Есть две проблемы:
если в конфигурации IIS указано Require client certificates, я получаю 403.7 ошибку при вызове функции входа в систему;
если в конфигурации IIS указано Accept client certificates, я получу CryptographicException"m_safeCertContext - недопустимый дескриптор";

но , эти проблемы возникают только в том случае, если клиент работает из Windows 7 x64, при запуске в Windows XP или даже в Windows Server 2003 он работает нормально.

ca установлена ​​на обеих машинах, во всех тестовых случаях конфигурация кажется полностью идентичной,
поэтому мой вопрос «Что, черт возьми?»

1 Ответ

2 голосов
/ 22 марта 2011

Я не вижу в вашем коде или конфигурации ничего неправильного, поэтому вы можете найти эти инструменты полезными для самостоятельного решения проблемы:

  1. Диагностика SSL для IIS (или для IIS 7 см. this )
  2. .NET Network Tracing
  3. Fiddler HTTP (S) прокси-отладчик (как дешифровать SSL )
  4. трассировка SSL
...