我正在使用这个 little class,它以字节数组形式返回一个 pfx 文件。

服务器端:

byte[] serverCertificatebyte;
var date = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
serverCertificatebyte = Certificate.CreateSelfSignCertificatePfx("CN=RustBuster" + RandomString(5),
    date,
    date.AddDays(7));

然后我将它发送给客户端(长度:1654):
tcpClient.GetStream().Write(serverCertificatebyte , 0, serverCertificatebyte .Length);

一旦客户端阅读它,我想将它转换为证书类:
(这里的长度也是 1654)

我尝试做一个新的 X509Certificate2(data);我得到了下面的错误。这适用于服务器端。怎么了?

我也用新的 X509Certificate2(data, string.Empty);并得到同样的错误



参数名称:长度

在 System.String.Substring (Int32 startIndex, Int32 length) [0x00000] in :0

在 Mono.Security.X509.X509Certificate.PEM (System.String type, System.Byte[] data) [0x00000] in :0

在 Mono.Security.X509.X509Certificate..ctor (System.Byte[] data) [0x00000] in :0

最佳答案

使用 X509Certificate2 构造函数以空密码加载 PKCS#12 时,Mono 中存在一个错误。已提交 patch 来解决此问题,但它(可能)未在您的单声道版本中发布。

尝试将字节保存到文件中,然后使用 new X509Certificate2(filepath, String.Empty)new X509Certificate2(filepath, null) 或使用一些默认的非空密码创建 pfx。

关于c# - 无法在客户端新 X509Certificate2() 解码证书,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34503063/

10-12 12:37