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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

看到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,如需转载请自行联系原作者


相关文章
|
1天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
1天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
|
1天前
|
存储 程序员 C语言
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
|
6天前
|
域名解析 安全 网络协议
免费通配符SSL证书不限制申请-2025最新渠道解析
在网络安全至关重要的今天,通配符SSL证书因其能保护主域名及所有二级子域名而备受青睐。本文解析2025年最新免费通配符SSL证书申请渠道,重点介绍JoySSL提供的不限量免费证书。通过简单步骤,用户可轻松申请并安装证书,确保网站安全。注意及时续签和政策变动,以保障长期稳定使用。
|
1月前
|
安全 网络协议 应用服务中间件
2025通配符证书免费申请步骤解析
打造安全、高效的网站加密环境,从免费通配符SSL证书开始!今年我们特别推出免费通配符SSL证书申请活动,覆盖主域名及所有子域名。只需一次申请,即可保护无限子域名,节省时间和资源。全程0成本,自动化流程快速配置,权威CA机构签发,兼容主流浏览器与平台。非技术人员也能轻松操作,提升网站安全性与用户信任度。立即访问JoySSL官网注册并申请,享受顶级加密服务!
|
2月前
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
54 13
|
2月前
|
JSON 数据格式
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
89 2
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习与深度学习:差异解析
机器学习与深度学习作为两大核心技术,各自拥有独特的魅力和应用价值。尽管它们紧密相连,但两者之间存在着显著的区别。本文将从定义、技术、数据需求、应用领域、模型复杂度以及计算资源等多个维度,对机器学习与深度学习进行深入对比,帮助您更好地理解它们之间的差异。
|
2月前
|
数据可视化 数据挖掘 BI
团队管理者必读:高效看板类协同软件的功能解析
在现代职场中,团队协作的效率直接影响项目成败。看板类协同软件通过可视化界面,帮助团队清晰规划任务、追踪进度,提高协作效率。本文介绍看板类软件的优势,并推荐五款优质工具:板栗看板、Trello、Monday.com、ClickUp 和 Asana,助力团队实现高效管理。
73 2
|
2月前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。

热门文章

最新文章

推荐镜像

更多