p.c*_*ell 95
该X509证书(相对的)限制在其功能是在.NET 1.0/1.1引入并且是.它可用于获取有关现有证书的信息(有效日期,颁发者等).它有简单的方法/操作(即从磁盘读取证书).
该x509Certificate2是X509证书的具有附加功能的一个子类.
So *_*ins 20
为了完整起见,这里有一个链接到 @ dommer答案的网站相关部分的副本,因为该网站可能不再出现,只有在谷歌的缓存中才能知道多长时间:
除了X509Certificate类之外,框架的1.1版本只允许您操作证书.事实上,v1.1 X509Certificate类只提供了基本支持:它只允许访问X509版本1字段(如有效日期和有效日期,主题和公钥),但不能访问版本2字段(如权限密钥标识符) )也不是版本3字段(如密钥用法).不支持从证书存储区加载证书,也没有支持访问证书吊销列表或证书信任列表的工具.Microsoft通过扩展证书类并提供访问证书库的类来改进Web服务增强(WSE)工具包.现在可以在.NET 3.0/2.0框架库中找到这些类.
第一个重大变化是一个名为X509Certificate2的新类,它派生自X509Certificate.不推荐使用访问X509证书字段的方法,现在该类具有访问这些字段的属性.此外,如果证书具有关联的私钥,则该类可以访问此密钥.如果私钥受一个私钥保护,有一些方法可以让您提供密码.密码通过SecureString参数传递,该参数是一种特殊类型,可确保当对象不再使用时,其占用的内存将被写入,以便机器上的其他进程无法读取密码.安全字符串和其他形式的受保护数据将在后面的章节中介绍.
由于X509Certificate2派生自X509Certificate,这意味着您可以通过X509Certificate2类调用静态方法CreateFromeCertFile和CreateFromSignedFile.但是,这些方法返回X509Certificate对象,您无法将其向下转换为X509Certificate2对象.X509Certificate类在3.0/2.0版本中得到了改进:它提供了访问某些X509字段的属性; 它提供了导入和导出方法来从字节数组初始化对象或从证书生成字节数组,它具有将从文件(ASN.1 DER)和字节数组创建对象的构造函数.有趣的是,X509Certificate2类有一个构造函数,可以从X509Certificate对象创建X509Certificate2对象.请注意,虽然X509Certificate对象只能显示X509v1字段,但它可以从X509v3证书创建,因此如果您从X509Certificate对象创建X509Certificate2对象,您将能够访问X509v3字段.
要将X.509证书从“ X509Certificate”转换为“ X509Certificate2”,请尝试如下操作:
X509Certificate X509 = sslStream.RemoteCertificate;
X509Certificate2 X5092 = new X509Certificate2(X509);
Run Code Online (Sandbox Code Playgroud)