applecommoncryptographicexception - MAC验证失败-从keyvault下载X.509



我有一个。net 5.0应用程序需要从Azure密钥库下载证书:

static X509Certificate2 DownloadCertificate(Secret secret) {
KeyVaultSecret key = new Provider(secret.KeyVaultName).GetSecretAsync(secret.SecretName).Result;
return new X509Certificate2(Convert.FromBase64String(key.Value), 
string.Empty, X509KeyStorageFlags.UserKeySet);
}

这在我的Windows机器上运行得很好,但是当我试图在苹果机器上运行它时,我得到以下错误:

Interop.AppleCrypto.AppleCommonCryptoCryptographicException : MAC verification failed during PKCS12 import (wrong password?)
at Interop.AppleCrypto.X509ImportCertificate(Byte[] bytes, X509ContentType contentType, SafePasswordHandle importPassword, SafeKeychainHandle keychain, Boolean exportable, SafeSecIdentityHandle& identityHandle)
at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData)

我在这里读到这是因为苹果和Windows处理X.509证书的方式不同,在苹果电脑上,没有密码的证书会导致抛出错误,但在Windows机器上不会抛出错误。这似乎是我的问题,但我不想使用这个来源建议的解决方案。是否有一种方法可以在不修改证书的情况下使其需要密码?

macOS无法加载带有NULL密码或错误密码的PFX。

如果你有一个pkcs# 12文件,没有密码保护,它有一个MAC条目,打开该文件将在Windows和Linux上工作,但在MAC上失败。

所以,虽然这是一个bug,但如果没有一个非常有说服力的论据,我们可能不会在。net中解决它(比如它是政府CA的密钥分发模型,或者类似的东西);而是一些理想情况下由苹果解决的问题。您可以使用此链接(https://bugreport.apple.com/,用于SecItemImport)报告相同的内容。

还有一个可用的解决方案,即代码可以作为基于BouncyCastle的解决方案

X509Certificate2/CommonCrypto:无法打开没有密码和有效MAC的pkcs# 12文件·Issue #23635·dotnet/runtime·GitHub

相关内容

  • 没有找到相关文章

最新更新