X509Certificate类解析证书的差异,算是.Net的BUG吗?
看到dudu发现Cache的BUG问题,于是乎,我也来写一篇,之前发现的一个问题。
首先,我们找一张证书(大家可以在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?还是说微软故意不走寻常路?
转载于:https://www.cnblogs.com/xray2005/archive/2011/11/07/2240445.html
X509Certificate类解析证书的差异,算是.Net的BUG吗?相关推荐
- Java解析证书内容
Java解析证书获取证书内部信息,在证书交换环节中常使用,网络上也提供很多参考方案,本文主要是提供证书base64格式解析和证书路径解析证书内容.在解析时可能会遇到一些问题,后面根据情况再具体说明. ...
- RandomAccessFile类解析
[0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--RandomAccessFile类解析 的相关知识: 0.1) 本文 转自: http ...
- @param注解的用法解析_SpringBoot 配置类解析
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/NvPO5-FWLiOlrsOf4wLaJA 作者:Li Wanghong SpringBoot ...
- Android开发--使用实体类解析JSON文本
Android开发–使用实体类解析JSON文本 在Android开发过程中,涉及到了API的调用的时候,会返回特定的数据,两个主流返回的数据格式是JSON形式和XML形式.但是相对于XML,JSON数 ...
- Java String、StringBuffer、StringBuilder类解析
String.StringBuffer.StringBuilder类解析 概述 String类:代表字符串. 特点 String实现了Serializable接口,表示String是可序列化的 实现了 ...
- Python OpenSSL 解析证书
openssl 介绍这里不做过多赘述,可以搜到很多相关资料.本文提供python 使用OpenSSL解析证书的方法. OpenSSL 解析certificate 证书 import OpenSSL i ...
- Python解析证书结构方法
Python解析证书结构方法 示例代码 示例代码 推荐使用:Python库 pyasn1 和 pyasn1-modules,pip安装失败的话,用conda安装即可. from pyasn1_modu ...
- HTML浏览器解析位置错误,各浏览器对CSS错误解析规则的差异及CSS hack.pdf
各浏览器对各浏览器对CSS错误解析规则的差异错误解析规则的差异及及CSS hack 标签标签 :_ , * , -moz-..., -webkit-... , !important, hack, 兼容 ...
- 免费生成SSL泛解析证书
免费生成SSL泛解析证书 1.前置条件 1.1.域名已备案 1.2.要申请证书的域名可以正常访问 1.3.一台LInux服务器 1.4.域名已挂载到腾讯云CDN(并非必须是鹅厂CDN解析平台.其他平台 ...
- 【Qt】x509证书操作之解析证书信息
QSslCertificate支持x509证书信息的解析 证书信息接口 函数 功能 QByteArray version() const 版本 QByteArray serialNumber() co ...
最新文章
- SQLServer自增变量修复
- js去掉字符串中的所有空格
- The “data“ option should be a function that returns a per-instance value in component definitions
- linux之ls只显示文件或者文件夹
- Mockito – JAXB的RETURNS_DEEP_STUBS
- 在JAR中打包使用JAR库
- 字符串中索引位置是什么意思_女孩子左手中指戴戒指什么意思 不同位置各有不同...
- IDEA中集成使用SVN
- Hamcrest 测试匹配框架
- win10电脑便签怎么换行 电脑便签记事本换行的两种方法
- Java进阶-面向对象
- GBase 8c产品高级特性介绍
- redis切换查询数据库 db0到db3
- 字符串是否为空(isEmpty和isBlank的区别)
- 2018面试的-5分钟自我介绍建议
- 程序员写作云笔记推荐
- 网络请求——跨域 的概念
- VSCode更换内核
- 适合入门的一些现成的人工智能项目
- hdu 4411 Arrest【最小费用流】
热门文章
- php 之将图片转换base64编码(为百度ocr作准备,解决 image format error)
- 阿里巴巴与小毛驴的故事——贪心算法
- golang 编译 执行时候报错cannot declare name db.Query
- 光盘安装 windowns 10 系统 与 Win10 英文系统修改成中文系统
- java截取utf8字符串_java中常用的字符串的截取方法
- 操作系统核心原理-4.线程原理(上):线程基础与线程同步
- [蓝桥杯]PREV-12.历届试题_危险系数
- assert.notDeepEqual()
- NSObject的hash方法
- base64编码的图片字节流存入html页面中的显示