【问题标题】:How to create certificate from .pfx file on Azure environment?如何在 Azure 环境中从 .pfx 文件创建证书?
【发布时间】:2020-02-14 08:33:51
【问题描述】:

我正在尝试在 Azure 函数中用 C# 初始化 x509Certificate2 类的新实例,如下所示:

X509Certificate2 cert = new X509Certificate2((certPath + @"/integration_certificate.pfx"), "pw", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet| X509KeyStorageFlags.Exportable);

当我在本地执行该函数时,这工作正常,但是当它在 Azure 上执行时,我收到以下错误:

Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The specified network password is not correct
   at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
   at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)

我在 Kudu 上使用了 OpenSSL 来检查我是否使用了正确的密码,并且可以检查。我能够阅读有关证书的信息并且一切看起来都正确。

我也尝试将证书上传到 Azure(看起来是正确的做法),但没有将其包含在源代码中,但我也无法让它工作,因为私钥只有 1024 位长所以 Azure 不接受它。证书是由第三方生成的,所以我认为我不可能以不同的方式生成证书。

有人有什么建议吗?顺便说一句,我目前正在使用 .NET 标准 2.0 作为目标框架。

【问题讨论】:

  • 是托管窗口吗? / 作为目录分隔符看起来很奇怪。进程是否有权访问 pfx 文件?
  • 主机是 windows 是的(操作系统版本:Microsoft Windows NT 10.0.14393.0)。当进程找不到证书时,我收到了不同的错误消息,因此看起来证书已找到。证书位于 home/site/wwwroot 目录下,所以我认为该进程也应该可以访问它?

标签: c# azure azure-functions .net-standard x509certificate2


【解决方案1】:

我认为该进程也应该具有访问权限。

此外,当您在 Azure 中上传 SSL 证书时,它必须满足一些要求。

•证书必须包含私钥。

•必须为密钥交换创建证书,可导出到个人信息交换 (.pfx) 文件。

•证书的主题名称必须与用于访问网站的域匹配。如果您需要使用此证书为多个域提供服务,则需要使用通配符值或指定 subjectAltName 值。

•证书应使用至少 2048 位加密。

我希望您在上传证书时尝试了以下选项。

如果您之前没有尝试过,请在下面的链接中附上详细信息供您尝试。

Binding the Certificates

1st Option

2nd Option

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 2015-01-08
    • 1970-01-01
    • 2012-08-13
    • 2016-12-14
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多