Как управлять SSL-сертификатами в azure webjobs (x509certificate2)
Мы разрабатываем Azure webjob, который должен взаимодействовать с несколькими серверами, каждый из которых требует отдельного SSL-соединения. Мы храним наши сертификаты на внешнем сервере и загружаем их во время выполнения вместе с соответствующими настройками SSL-соединения. Когда мы вызываем конструктор X509Certificate2, чтобы добавить его в коллекцию X509CertificateCollection, webjob останавливается с кодом выхода -1073740940 и его статус становится "PendingRestart". Мы предполагаем, что класс X509Certificate2 не совместим с webjobs, но мы не можем найти никаких подсказок о том, как решить эту проблему.
private X509CertificateCollection GetClientCertificates(byte[] sslCertificateBytes) { log_?.OnEvent($"{nameof(SSLStreamFactory)} function {nameof(GetClientCertificates)} started"); X509CertificateCollection result = new X509Certificate2Collection(); log_?.OnEvent($"{nameof(X509CertificateCollection)} {nameof(result)} construction successfull"); try { if (sslCertificateBytes != null) { log_?.OnEvent($"{nameof(sslCertificateBytes)} enumerable != null"); result.Add(new X509Certificate2(sslCertificateBytes, socketSettings_.CertificatePassword)); log_?.OnEvent($"result.Add successful"); } else if (!string.IsNullOrEmpty(socketSettings_.CertificatePath)) { log_?.OnEvent($"{nameof(socketSettings_.CertificatePath)} != null"); result = new X509Certificate2Collection(); log_?.OnEvent($"{nameof(X509CertificateCollection)} {nameof(result)} construction successfull"); var clientCert = StreamFactory.LoadCertificate(socketSettings_.CertificatePath, socketSettings_.CertificatePassword, log_); log_?.OnEvent($"{nameof(StreamFactory.LoadCertificate)} function ended"); if (clientCert != null) { result.Add(clientCert); log_?.OnEvent($"result.Add successful"); } } } catch (Exception ex) { log_?.OnEvent($"{nameof(SSLStreamFactory)} function {nameof(GetClientCertificates)} raised exception: {ex.Message}"); throw; } log_?.OnEvent($"{nameof(SSLStreamFactory)} function {nameof(GetClientCertificates)} ended"); return result; }
Что я уже пробовал:
Мы ищем ответ в интернете без какого-либо результата.