В моем Azure Linux веб-приложении я пытаюсь выполнить вызов API для внешнего поставщика с сертификатом. Этот вызов не выполняется, хотя он работает нормально при развертывании того же кода в плане обслуживания приложения Windows. Эквивалентная командная строка cURL:
curl --cert-type p12 --cert /var/ssl/private/THUMBPRINT.p12 -X POST https://www.example.com
Вызов завершается со следующей ошибкой:
curl: (58) could not load PKCS12 client certificate, OpenSSL error error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak
Проблема вызвана OpenSSL 1.1.1d, который по умолчанию требует уровня безопасности из 2, и мой сертификат подписан с SHA1 с шифрованием RSA:
openssl pkcs12 -in THUMBPRINT.p12 -nodes | openssl x509 -noout -text | grep 'Signature Algorithm'
Signature Algorithm: sha1WithRSAEncryption
Signature Algorithm: sha1WithRSAEncryption
На обычной Linux VM, я мог бы отредактировать /etc/ssl/openssl/cnf
, чтобы изменить
CipherString = DEFAULT@SECLEVEL=2
на безопасность уровень 1, но в веб-приложении Azure Linux изменения, внесенные в этот файл, не сохраняются ..
Поэтому мой вопрос: как изменить уровень безопасности OpenSSL на * 1025? * веб-приложение? Или есть ли лучший способ разрешить использование моего слабого сертификата?
Примечание: я не являюсь эмитентом сертификата, поэтому я не могу восстановить его сам. Я уточню у эмитента, могут ли они его восстановить, но пока я хотел бы продолжить, если это возможно:)