.NET WebRequest에서 PKCS#12 인증서 파일을 사용하는 방법은 무엇입니까?
-
21-08-2019 - |
문제
간단한 XML 기반 웹 서비스에 액세스하는 데 사용되는 PKCS#12 인증서가 발행되었습니다. PKCS#12 파일을 Windows (Vista)에로드하면 브라우저를 사용하여 서비스에 액세스 할 수 있습니다.
PKCS#12를 OS 인증서 컬렉션에로드하지 않고 애플리케이션을 통해 서비스에 액세스하려고 시도하면 다음 코드를 작성했습니다.
// The certificate i'm using can not be authenticated as it is a development one.
// For now, just ignore it.
static bool myRemoteCertificateValidationCallback(
Object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors
)
{ return true; }
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = myRemoteCertificateValidationCallback;
X509Certificate Cert = new X509Certificate(@"certificatefile.p12","medialab");
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://ServiceURL");
Req.ClientCertificates.Add(Cert);
Stream S = Req.GetResponse().GetResponseStream();
TextReader TR = new StreamReader(S);
string Ret = TR.ReadToEnd();
Console.Write(Ret);
}
안타깝게도이 코드는 실패하고 System.net.webexception을 얻습니다. 요청이 중단되었습니다. SSL/TLS 보안 채널을 만들 수 없습니다. PKCS#12 파일을 Windows에로드하면 코드가 갑자기 작동한다는 것을 알았습니다.
파일만으로도 Windows 인증서 저장소를 사용하지 않으려면 어떻게해야합니까?
고마워요, 보아스
더 많은 정보 : SP1을 Visual Studio에 적용하면 이제 다른 예외가 나타납니다. "SSPI에 대한 호출이 실패하고 내부 예외를 참조하십시오."내부 예외가있는 내부 예외를 참조하십시오. "
해결책
인증서에 인증서를 설치해야합니다. 가장 쉬운 방법은 IE를 사용하고 인증서를 가져 오는 것입니다.
제휴하지 않습니다 StackOverflow