在我的 Azure Linux Web 应用程序中,我尝试使用证书对外部提供程序执行 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 Web 应用程序上,我对该文件所做的更改不会持久化..
所以我的问题是:如何更改 Azure Web 应用程序的 OpenSSL 安全级别?还是有更好的方法来允许使用我的弱证书?
注意:我不是证书的颁发者,所以我不能自己重新生成它。我会与发行人核实他们是否可以重新生成它,但与此同时,如果可能的话,我想继续 :)