Аутентификация в RavenDB 4 должна происходить с помощью сертификатов, которые я создал с помощью Let's Encrypt. Мой сертификат закрытого ключа (.pfx) хранится в Azure Key Vault. Поскольку можно загружать только сертификаты, защищенные паролем, я сделал это безопасным с помощью пароля.
При загрузке сертификата с использованием отпечатка сертификата он всегда показывает, что у него нет закрытого ключа, что приводит к сбою процесса аутентификации в моем экземпляре RavenDB. Как локально через хранилище сертификатов Windows, так и в Azure.
Я уже пытался работать с сертификатом закрытого ключа без пароля, после чего мне удалось получить закрытый ключ. Тем не менее, это не решение, поскольку я не могу загрузить его в Azure.
var certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2 targetClientCertificate;
var certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, ravenDbSettings["CertificateThumbPrint"], false);
targetClientCertificate = new X509Certificate2(certCollection[0].GetRawCertData(), ravenDbSettings["CertificatePassword"], X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); ;
Я также попробовал это с помощью экспорта, который я где-то нашел
var targetTwo = new X509Certificate2(certCollection[0].Export(X509ContentType.Pfx, ravenDbSettings["CertificatePassword"]));
Но потом я получил
Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: «Ключ недействителен для использования в указанном состоянии»
Моя цель — загрузить закрытый ключ сертификата и, таким образом, пройти аутентификацию в RavenDB.
targetClientCertificate = certCollection[0];
? - person bartonjs   schedule 27.06.2019