Unicode问题Pdf在添加数字签名时

时间:2016-05-12 09:14:22

标签: pdf certificate adobe digital-signature

我在使用来自智能卡的数字签名证书签署PDF文件时遇到问题 所有签名都具有没有unicode的外观,如下所示 [![所有签名] [1]] [1]

当我选择签名时,它就像下面没有unicode一样 enter image description here

并在签署文件后仍然相同,

enter image description here

请注意证书颁发者名称是阿拉伯语,所以请如何解决它 非常感谢你。

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值可以包含任何长度,包括零。此类型是字符串类型。

     

A Layman's Guide to a Subset of ASN.1, BER, and DER

因此,虽然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字符集。

特别是Adobe Reader似乎属于前者,至少它不包括subjectAltName中的阿拉伯语脚本。另一方面,Microsoft Windows的证书查看器属于后者,特别是它覆盖了subjectAltName

话虽如此,根据RFC 5280,在这种情况下使用TeletexString仍然值得怀疑:

  

实现可能会遇到证书和CRL      使用TeletexString,BMPString或UniversalString编码的名称,但是      支持这些是可选的。

因此,您真的很高兴您的证书完全被接受,因为Adobe可能已经选择不再支持TeletexString并因此拒绝您的证书...

要获得subjectAltName中阿拉伯语脚本的更普遍接受(通过RFC兼容软件),您应该尝试说服您的证书颁发机构重新颁发您的证书,但使用UTF8String进行阿拉伯语脚本而不是TeletexString。但是,可能会有一些破碎的遗留应用程序,这些已经更正的证书......