Windows 11, круглосуточно
.Net Framework 4.8, 4.7.2Проблема:
Я не понимаю, как получить открытый ключ сертификата сервера в формате PKCS8 с помощью класса X509Certificate.Объяснение:
Я реализую проверку сертификата пользовательского сервера для SSL-соединения (так называемое закрепление сертификата) следующим образом:
- Создайте новый SSLStream:
Код: Выделить всё
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null);
- Объявите метод ValidateServerCertificate():
Код: Выделить всё
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) {}
- Получить открытый ключ сертификата сервера
Код: Выделить всё
certificate.GetPublicKey()
Код: Выделить всё
private static byte[] pkcs8Prefix = { 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00 };
byte[] pkcs8PublicKey = pkcs8Prefix.Concat(certificate.GetPublicKey()).ToArray();
Подробнее здесь: https://stackoverflow.com/questions/793 ... cs8-format
Мобильная версия