目前,我正在开发一个Web应用程序,该应用程序将用作认证注册的MS接口。在应用程序生成csr并将其发送到CA之后,错误就会出现。证书应具有以下结构:
Serialnumber = UserId, CN = FirstName SecondName, O = Organization, P = PhoneNumber
下面是一个真实的例子:
Serialnumber = 200554041000, CN = John Farel, O = SRL Insign, P = 60182209, C = MD
显示的错误是:
CertEnroll::CX500DiffinguishedName::Encode:该字符串包含无效的X500名称属性键、oid、值或分隔符。0x80092023 (-2146885597)
如果我删除P或在电话上更改它,一切顺利,证书正在生成。
第二!)证书生成后,主题DN包含所有内容,bun,而不是序列号和电话。
我在Microsoft 2008上使用MS CA,CA密码服务提供商:,Hash算法: SHA1。
欲知更多信息,请留言。谢谢你的期待!
发布于 2015-04-09 05:22:03
很少有事情需要知道:
1) "PhoneNumber“属性被命名为"Phone",而不是"P”或其他任何东西。
编辑:
2)我检查了SDK,不幸的是,似乎不可能在subject中包含Phone RDN属性。在头文件中,只能添加以下属性:
//+--------------------------------------------------------------------------
// Name properties:
#define wszPROPDISTINGUISHEDNAME TEXT("DistinguishedName")
#define wszPROPRAWNAME TEXT("RawName")
#define wszPROPCOUNTRY TEXT("Country")
#define wszPROPORGANIZATION TEXT("Organization")
#define wszPROPORGUNIT TEXT("OrgUnit")
#define wszPROPCOMMONNAME TEXT("CommonName")
#define wszPROPLOCALITY TEXT("Locality")
#define wszPROPSTATE TEXT("State")
#define wszPROPTITLE TEXT("Title")
#define wszPROPGIVENNAME TEXT("GivenName")
#define wszPROPINITIALS TEXT("Initials")
#define wszPROPSURNAME TEXT("SurName")
#define wszPROPDOMAINCOMPONENT TEXT("DomainComponent")
#define wszPROPEMAIL TEXT("EMail")
#define wszPROPSTREETADDRESS TEXT("StreetAddress")
#define wszPROPUNSTRUCTUREDNAME TEXT("UnstructuredName")
#define wszPROPUNSTRUCTUREDADDRESS TEXT("UnstructuredAddress")
#define wszPROPDEVICESERIALNUMBER TEXT("DeviceSerialNumber")
3)避免在.NET应用程序中使用“”提供程序,因为它是CNG,而X509Certificate2
不支持CNG (羞耻于.NET)。不过,建议对CA密钥使用KSP (当没有HSM时)。
https://stackoverflow.com/questions/29524729
复制相似问题