X509Certificate类解析证书的差异,算是.Net的BUG吗?

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析DNS,个人版 1个月
云解析 DNS,旗舰版 1个月
简介:

看到dudu发现CacheBUG问题,于是乎,我也来写一篇,之前发现的一个问题。

首先,我们找一张证书(大家可以在ie浏览器的“Internet 选项”à内容à证书,选择一张证书保存到文件或直接打开看看)。可以看到使用者的信息,如下图所示:

然后,我们使用.net X509Certificate类的解析证书内容。具体代码如下:

X509Certificate x509 = new X509Certificate(@"d:\1.cer");

            var subject = x509.Subject;

            Console.WriteLine(subject);

            Console.Read();

运行代码,可以看到如下内容:

CN=Microsoft Windows Hardware Compatibilioration, L=Redmond, S=Washington, C=US

现在问题来了,就是这个S=Washington的项和其他安全库解析的不一样,其他的解析出来都是ST=Washington

按照RFC规范这个S项目表示StateOrProvinceName。解析不一样的结果就是:由于.net中安全类实现很有限,如果混合其他的安全库一起使用,在解析证书时不一样,而且还会导致通过拆分这段字符串来查找ST就会出错,还有如果计算这段字符串的HASH值也就不一样了。

于是乎,查找了相关的RFC规范,其中RFC 1779 A String Representation of Distinguished Names)中给出了标准形式是:

                       Key     Attribute (X.520 keys)

                       ------------------------------

                       CN      CommonName

                       L       LocalityName

                       ST      StateOrProvinceName

                       O       OrganizationName

                       OU      OrganizationalUnitName

                       C       CountryName

                       STREET StreetAddress

 

RFC 2256 A Summary of the X.500(96) User Schema for use with LDAPv3)也是这样描述的:

   This attribute contains the full name of a state or province
   (stateOrProvinceName).
    ( 2.5.4.8 NAME 'st' SUP name )

就搞不清楚,.Net的实现或者说是WINDOWS的实现,参考的规范不一样?还是本来实现就有问题存在BUG?还是说微软故意不走寻常路?

 



    本文转自风车车  博客园博客,原文链接:http://www.cnblogs.com/xray2005/archive/2011/11/07/2240445.html,如需转载请自行联系原作者


相关文章
|
29天前
|
缓存 开发者 索引
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
17 0
|
1月前
|
数据处理 C语言
深入解析x86架构:X86, X86_32和X86_64的差异与应用
深入解析x86架构:X86, X86_32和X86_64的差异与应用
87 0
|
1月前
|
存储 安全 Java
滚雪球学Java(60):深入解析Java中的Vector集合类!
【6月更文挑战第14天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
167 59
滚雪球学Java(60):深入解析Java中的Vector集合类!
|
16天前
|
开发工具 Android开发 Swift
安卓与iOS开发环境的差异性解析
【7月更文挑战第11天】在移动应用开发的广阔天地中,安卓与iOS两大阵营各据一方,它们的开发环境差异如同东西方文化的差异一样鲜明。本文将深入探讨这两个平台在开发工具、编程语言、用户界面设计以及系统架构等方面的不同,旨在为开发者提供一个清晰的对比视角,帮助他们根据项目需求和个人偏好选择最合适的开发路径。
|
1月前
|
Java 开发工具 Android开发
安卓与iOS开发差异解析
【6月更文挑战第21天】本文旨在深入探讨安卓和iOS两大移动操作系统在应用开发过程中的主要差异。通过对比分析,揭示各自的设计哲学、编程语言选择、用户界面构建、性能优化策略以及发布流程的异同。文章将提供开发者视角下的实用信息,帮助他们更好地理解各自平台的特点和挑战,从而做出更明智的开发决策。
|
1月前
|
SQL 缓存 算法
【源码解析】Pandas PandasObject类详解的学习与实践
【源码解析】Pandas PandasObject类详解的学习与实践
|
1月前
|
JavaScript 前端开发 Java
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
27 2
|
1月前
|
存储 JavaScript 前端开发
【JavaScript】JavaScript 中的 Class 类:全面解析
【JavaScript】JavaScript 中的 Class 类:全面解析
31 1
|
1月前
|
Java
【Java】Object类简单解析
【Java】Object类简单解析
16 1
|
1月前
|
存储 SQL 算法
【源码解析】深入解析 pandas的Block 类中算术运算和重排实现
【源码解析】深入解析 pandas的Block 类中算术运算和重排实现

推荐镜像

更多