我想验证远程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:
if(Certificate.URL =“MYSAFEURL.COM”){// OK}
有人可以“修改”我的.exe中的字符串,将MYSAFEURL更改为whatever.com
那么有没有办法100%确定证书是否真实?
答案 0 :(得分:0)
您可以登录网址
if((Hash(Certificate.URL) = Decrypt("UrlSignature")) {//OK}
With "UrlSignature" = Encrypt(Hash("MYSAFEURL.COM"))
哈希可以是SHA256
加密和解密是一种非对称加密,如RSA
您使用私钥进行加密
您使用公钥解密