Я работаю над некоторым кодом, который создает сертификат X509 и пару открытых/закрытых ключей. Открытый ключ добавляется в сертификат и отправляется в ЦС, который подписывает его.
Возвращенный сертификат затем открывается через класс System.Security.Cryptography.X509Certificates.X509Certificate2. Теперь я хочу использовать этот сертификат, чтобы инициировать безопасное соединение с другими клиентами. Поэтому я использую класс SslStream. Чтобы запустить SSL-квитирование, я использую этот метод:
server.AssociatedSslStream.AuthenticateAsServer(
MyCertificate, // Client Certificate
true, // Require Certificate from connecting Peer
SslProtocols.Tls, // Use TLS 1.0
false // check Certificate revocation
);
Этот метод требует, чтобы закрытый ключ был связан с сертификатом. Конечно, сертификат, возвращенный ЦС, не содержит закрытого ключа. Но он хранится как .key файл на жестком диске. Класс X509Certificate2 имеет свойство PrivateKey, которое, я думаю, свяжет закрытый ключ с сертификатом, но я не могу найти способ установить это свойство.
Можно ли каким-либо образом связать закрытый ключ с классом .net X509?