【发布时间】:2021-07-22 11:51:45
【问题描述】:
我正在尝试连接到 Mosquitto 代理。 代理将有一个 ca.crt 和一个 server.crt。我的应用只有 ca.crt。
连接后,代理提供 ca.crt 和 server.crt(证书链)。 如何根据我已经拥有的 ca.crt 验证两者? ca.crt 和客户端上的那个是一样的。
【问题讨论】:
标签: c# cryptography certificate public-key-encryption
我正在尝试连接到 Mosquitto 代理。 代理将有一个 ca.crt 和一个 server.crt。我的应用只有 ca.crt。
连接后,代理提供 ca.crt 和 server.crt(证书链)。 如何根据我已经拥有的 ca.crt 验证两者? ca.crt 和客户端上的那个是一样的。
【问题讨论】:
标签: c# cryptography certificate public-key-encryption
使用X509Chain 类并将加载为X509Certificate2 的ca.crt 放到ExtraStore 属性的ChainPolicy 属性上。
var caCert = new X509Certificate2(".\\ca.crt");
var serverCert = new X509Certificate2(".\\server.crt");
X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
ch.ChainPolicy.ExtraStore = new X509Certificate2Collection(caCert);
ch.Build (serverCert);
【讨论】: