我在使用来自智能卡的数字签名证书签署PDF文件时遇到问题 所有签名都具有没有unicode的外观,如下所示 [![所有签名] [1]] [1]
并在签署文件后仍然相同,
请注意证书颁发者名称是阿拉伯语,所以请如何解决它 非常感谢你。
答案 0 :(得分:1)
问题是由于阿拉伯名称在证书中的编码方式。
在相关证书中,阿拉伯语脚本中的名称包含在subjectAltName
扩展名中,并且编码为TeletexString
:
032F 75: SEQUENCE {
<06 03>
0331 3: OBJECT IDENTIFIER subjectAltName (2 5 29 17)
: (X.509 extension)
<04 6E>
0336 6E: OCTET STRING, encapsulates {
<30 6C>
0338 6C: SEQUENCE {
<A4 4A>
033A 4A: [4] {
<30 48>
033C 48: SEQUENCE {
<31 46>
033E 46: SET {
<30 44>
0340 44: SEQUENCE {
<06 03>
0342 3: OBJECT IDENTIFIER commonName (2 5 4 3)
: (X.520 DN component)
<14 3D>
0347 3D: TeletexString
: 'Ù.ØÙ.د اÙ.بدراÙ.Ù. عبداÙ.عزÙ.ز اÙ'
: '.بدراÙ.Ù.'
: }
: }
: }
: }
<81 1E>
0386 1E: [1] 'XXX.XXXXXXXXXXXXXXXX@XXXXX.XXX'
: }
: }
: }
(由于OP在他的截图中修改了电子邮件地址,我在这里做了同样的事情。)
ASN.1中的TeletexString
(= T61String
)类型
表示一个T.61个字符的arbtrary字符串。 T.61是ASCII字符集的8位扩展。特别&#34;逃脱&#34;序列指定后续字符值的解释,例如,日语;最初的解释是拉丁文。字符集包括非打印控制字符。 T61String类型仅允许拉丁语和日语字符解释,以及实现者&#39;目录名称的协议不包括控制字符[NIST92]。 T61String值可以包含任何长度,包括零。此类型是字符串类型。
因此,虽然T.61 一般允许使用阿拉伯语脚本,但在ASN.1 中TeletexString
(= T61String
)类型中的使用 >不强> 的
(您可以在ISO/IEC 8824-1中结合the ISO International Register of Coded Character Sets to be used with Escape Sequences找到允许字符的确切定义。)
像往常一样,某些应用程序具有TeletexString
实现,它完全覆盖指定的扩展,有些应用程序具有覆盖更多的实现,直到整个T.61字符集。
subjectAltName
中的阿拉伯语脚本。另一方面,Microsoft Windows的证书查看器属于后者,特别是它覆盖了subjectAltName
。
话虽如此,根据RFC 5280,在这种情况下使用TeletexString
仍然值得怀疑:
实现可能会遇到证书和CRL 使用TeletexString,BMPString或UniversalString编码的名称,但是 支持这些是可选的。
因此,您真的很高兴您的证书完全被接受,因为Adobe可能已经选择不再支持TeletexString
并因此拒绝您的证书...
要获得subjectAltName
中阿拉伯语脚本的更普遍接受(通过RFC兼容软件),您应该尝试说服您的证书颁发机构重新颁发您的证书,但使用UTF8String
进行阿拉伯语脚本而不是TeletexString
。但是,可能会有一些破碎的遗留应用程序,这些已经更正的证书......