1

我的 Web 服务器使用的是自签名 SSL 证书。我可以通过自己实施验证检查来连接它:

private static Boolean ValidateCertificate(object sender,
     X509Certificate certificate, X509Chain chain,
     SslPolicyErrors sslpolicyerrors)
{
  return certificate.GetCertHashString().equals("ABCDEF");
}

private void Connect(String requestUrl)
{
    ServicePointManager.ServerCertificateValidationCallback = ValidateCertificate;
    var request = (HttpWebRequest) WebRequest.Create(requestUrl);
    var response = request.GetResponse();
    //...
}

将返回的哈希GetCertHashString()值与硬编码值进行比较以验证这确实是预期的证书是否安全?

“真实”证书是链的一部分,必须验证到根证书,该根证书是自签名的。我猜该根证书的可验证部分被硬编码到每个应用程序中。这使我相信我的自签名证书将与其他任何证书一样安全,只要硬编码值没有被篡改,这意味着可以访问机器本身,在这种情况下,标准根证书可能会被篡改也。那是对的吗?

4

0 回答 0