我的网络服务器正在使用自签名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()
返回的哈希值与硬编码值进行比较以确认这确实是预期的证书是否安全?
“真实”证书是链的一部分,必须经过验证才能获得自签名的根证书。我猜测根证书的可验证部分被硬编码到每个应用程序中。这使我相信我的自签名证书将与其他任何证书一样安全,只要硬编码值不被篡改,这意味着访问机器本身,在这种情况下标准根证书可能被篡改太。这是对的吗?