2012-11-22 217 views
1

我想驗證遠程SSL證書。如何驗證遠程SSL證書?

X509Certificate2的實例,並訪問它:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.paypal.com/de/webapps/mpp/home"); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
response.Close(); 
X509Certificate cert = request.ServicePoint.Certificate; 
X509Certificate2 cert2 = new X509Certificate2(cert); 
byte[] rawdata = cert2.RawData; 
MessageBox.Show(cert2.GetNameInfo(X509NameType.EmailName,true)); 

但我怎麼現在才知道,這真的是我的證書?

那麼現在如何驗證它呢? 如果我做:

Dummycode:

如果(Certificate.URL = 「MYSAFEURL.COM」){// OK}

有人在我的.exe改變MYSAFEURL到可以 「修改」 字符串whatever.com

那麼有什麼辦法可以100%確定證書是真實的嗎?

+0

可能的重複[如何驗證X509 certi fate?](http://stackoverflow.com/questions/3613615/how-to-validate-x509-certificate) – CodeCaster

+0

不,我看到這個問題,但沒有找到解決方案來正確驗證證書。 – pila

+0

如果您可以提供更多關於您正在嘗試做什麼的信息,它將會有所幫助。這是什麼類型的客戶端,它與哪種服務器通信以及您想要驗證的是什麼? – CodeCaster

回答

0

您可以登錄網址

if((Hash(Certificate.URL) = Decrypt("UrlSignature")) {//OK} 

With "UrlSignature" = Encrypt(Hash("MYSAFEURL.COM")) 

哈希可以SHA256

加密和解密是不對稱加密(如RSA)

你加密與私鑰

您解密用公開密鑰

+0

你能解釋爲什麼這能解決他的問題嗎?字符串仍然可以修改,請稍微擴展一下。 –