Azure Linux веб-приложение: изменить уровень безопасности OpenSSL по умолчанию? - PullRequest
0 голосов
/ 30 апреля 2020

В моем 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? * веб-приложение? Или есть ли лучший способ разрешить использование моего слабого сертификата?

Примечание: я не являюсь эмитентом сертификата, поэтому я не могу восстановить его сам. Я уточню у эмитента, могут ли они его восстановить, но пока я хотел бы продолжить, если это возможно:)

1 Ответ

0 голосов
/ 30 апреля 2020

Звонок в службу поддержки Microsoft привел меня к решению. Сценарий можно запускать всякий раз, когда запускается контейнер веб-приложения, что означает, что можно редактировать файл openssl.cnf до запуска приложения do tnet.

Для этого перейдите к Configuration блейд вашего Linux веб-приложения, затем General settings, затем Startup command:

Azure configuration blade

Startup command - это команда, которая выполняется, когда контейнер запускается. Вы можете делать то, что хотите, но оно ДОЛЖНО запускать ваше приложение, потому что оно больше не выполняется автоматически.

Вы можете S SH в свое Linux веб-приложение и отредактировать этот файл custom_startup.sh:

#!/usr/sh

# allow weak certificates (certificate signed with SHA1)
# by downgrading OpenSSL security level from 2 to 1
sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /etc/ssl/openssl.cnf

# run the dotnet website
cd /home/site/wwwroot
dotnet APPLICATION_DLL_NAME.dll

Соответствующий документ c можно найти здесь: https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq#built -in-images

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...