Итак, у меня есть следующая система: есть клиентское приложение, которое запрашивает сервис следующим образом:
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 установлена на обеих машинах, во всех тестовых случаях конфигурация кажется полностью идентичной,
поэтому мой вопрос «Что, черт возьми?»