我想在我的应用程序中检查ssl证书的公钥。
要做到这一点,我在使用此代码的地方处理ServicePointManager.ServerCertificateValidationCallback
private static bool ValidateServerCertficate(object sender, X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
var myKey = System.Convert.ToBase64String(HexStringToHex(certificate?.GetPublicKeyString()));
return supportedPublicKey == myKey;
}
其中supportedPublicKey是一个字符串,是我从控制台命令获得的
openssl s_client -connect gibdd-pay.ru:443 | openssl x509 -pubkey -noout
问题是这两个值是不同的。好像控制台向我返回带有某种前缀的PublicKeyString。键入控制台的样子
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A + PublicKeyString
为什么会这样?如何从我的应用程序中获取此前缀?