1

リモート 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));

しかし、それが本当に私の証明書であることをどうやって知ることができますか?

では、どうすれば今それを検証できますか?私が作る場合:

ダミーコード:

if(Certificate.URL = "MYSAFEURL.COM") {//OK}

誰かが私の.exeの文字列を「変更」して、MYSAFEURLをwhatever.comに変更する可能性があります

では、証明書が本物であることを 100% 確実にする方法はありますか?

4

1 に答える 1

0

URL に署名できます

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

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

ハッシュはSHA256にすることができます

暗号化と復号化は RSA のような非対称暗号化です

秘密鍵で暗号化します

公開鍵で復号化します

于 2015-09-16T13:34:17.787 に答える