我正试图用安卓系统中的spongyCastle生成一个csr,它必须被提交到一个webservice中。我的问题是,webservice总是抱怨CSR不是DER或PEM格式。另一方面,如果我使用Openssl命令行来生成它,那么webservice就会接受它,所以我知道webservice可以工作,也知道提交它的代码。那么,请一些专家注意到,我通过代码生成的CSR与OpenSSL命令行生成的CSR之间的差异,从公钥中分离出来吗?
由android中的spongyCastle代码创建的
以及由OpenSSL命令行创建的
--开始申请证书
提亚
纳尔逊
编辑:我要感谢所有回复的人。总之,我犯了两个错误。问题应该更像是为什么第一份企业社会责任不被接受,第二份是肯定的。
第二个错误是,这毕竟是没有问题的。只是在构建xml的代码中犯了一个愚蠢的错误,当使用手工生成的CSR时,xml丢失了一个字节。调试900+字符字符串是一件痛苦的事。
再次谢谢大家。
发布于 2019-10-04 01:54:33
假设您正确发布,您的第二个文件将声明的PEM格式的base64主体作为一行,而不是按要求将其分解/折叠成64个字符(最大)行。见接近尾端的RFC 7468第2条。有些软件对此松懈(包括,有益的是,openssl asn1parse !)但不是全部。我想知道您是否切换了这些文件,因为OpenSSL命令行(和库)总是按照需要使用换行来编写PEM --尽管它可能只在Windows上编写Unix样式的换行符(LF ),而且如果您在像记事本这样的Windows程序中打开这样的文件,它可能会忽略/丢弃LF,并将它作为一个大行来处理,同时wordpad (或type或more)也会正确地显示它。
发布于 2019-10-03 15:17:03
因此,首先,我们需要解码这两个ASN.1编码的CSR。
如您所见,它们在公钥的值、本地名称(=城镇)、OrganizationalUnit名称(营销与软件)、OrganizationName (Inforpires srl)和末尾的签名上存在差异。
然而,最重要的问题是,它们对不同的属性有不同的排序,据我理解,这违反了解释错误的DER规则。
https://crypto.stackexchange.com/questions/74802
复制相似问题