Я использую этот маленький класс, который возвращает мне файл pfx в массиве байтов.
Сторона сервера:
byte[] serverCertificatebyte;
var date = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
serverCertificatebyte = Certificate.CreateSelfSignCertificatePfx("CN=RustBuster" + RandomString(5),
date,
date.AddDays(7));
Затем я отправляю его клиенту (длина: 1654):
tcpClient.GetStream().Write(serverCertificatebyte , 0, serverCertificatebyte .Length);
Как только клиент прочитал это, я хотел бы преобразовать его в класс сертификата: (длина здесь также 1654)
Я пытаюсь сделать новый сертификат X509Certificate2 (данные); и я получаю ошибку внизу. Это работает на стороне сервера. В чем дело?
Я также попробовал это с новым X509Certificate2 (data, string.Empty); и получил ту же ошибку
Ошибка System.Security.Cryptography.CryptographicException: невозможно декодировать сертификат. ---> System.Security.Cryptography.CryptographicException: Входные данные не могут быть закодированы как действительный сертификат. ---> System.ArgumentOutOfRangeException: не может быть отрицательным.
Имя параметра: длина
в System.String.Substring (Int32 startIndex, Int32 length) [0x00000] в: 0
at Mono.Security.X509.X509Certificate.PEM (тип System.String, данные System.Byte[]) [0x00000] в: 0
at Mono.Security.X509.X509Certificate..ctor (System.Byte[] data) [0x00000] в: 0
new X509Certificate2(filepath, String.Empty)
илиnew X509Certificate2(filepath, null)
. - person pepo   schedule 29.12.2015