Аутентификация в RavenDB 4 должна осуществляться с помощью сертификатов, которые я создал с помощью Let's Encrypt. Мой сертификат закрытого ключа (.pfx) хранится в хранилище ключей Azure. Поскольку только защищенные паролем сертификаты могут быть загружены, я сделал это безопасным с помощью пароля.
При загрузке сертификата с использованием отпечатка сертификата он всегда показывает, что у него нет закрытого ключа, что приводит к сбою процесса аутентификации в моем экземпляре 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.