【发布时间】:2019-02-07 17:45:06
【问题描述】:
我有一个从资源文件加载 pem 证书的简单方法:
/// <summary>
/// Helper method to load a .pem and return it as a X509Certificate2
/// </summary>
private static X509Certificate2 GetX509Certificate2(string path)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(path))
{
byte[] data = new byte[stream.Length];
stream.Read(data, 0, (int)stream.Length);
return new X509Certificate2(data);
}
}
它在 Windows 和 Ubuntu 上运行良好,但在 macOS 上失败,原因如下:
互操作+AppleCrypto+AppleCommonCryptoCryptographicException:未知 导入格式。
我尝试使用 Span<byte> 重载,但收效甚微。
有没有人有任何想法/解决方法?
谢谢
【问题讨论】:
-
是否可能有前导或尾随的额外数据?你能分享一个不起作用的价值吗?
-
我不确定 - 我正在使用此证书(我可以找到的第一个过期证书用于测试):sk.ee/upload/files/Juur-SK.pem.crt
-
是的,但是您是否可能会在资源创建过程中添加或添加奇怪的字节。你看过
data中的实际字节吗?此外,您的阅读不能保证阅读所有内容/填写data。 -
我使用的是 Visual Studio 2017,所以我不认为任何奇异的转换会影响资源。 Read 可能没有读到最后,但怀疑这在 Windows 和 Ubuntu 上是否有效......
-
我可以排除读取(读取的字节数与流长度匹配)并且字节数组似乎已填充好...还有其他想法吗??
标签: c# .net-core ssl-certificate