这是我在这里发表的第一篇文章。我想寻求帮助。
我在签署 .jar 应用程序时遇到问题。我不知道如何在 jarsigner 命令中指定别名,其中包含变音符号。 我有代码签名证书。我的别名 (Pa Zówka) 包含 ó 字母 - 带有锐音的拉丁文小写字母 O。 我使用的是 JDK 8u121。 我尝试了很多组合,但每次我都会收到错误消息:
jarsigner: key associated with <my alias>. not a private key
我尝试将我的别名转换为 Unicode:
\u0050\u0061 \u007a\u00f3\u0077\u006b\u0061
或仅替换这个有问题的字母:
Pa Z\u00f3wka
我已将 Windows 命令行的代码页更改为 65001、852 和 1252。仍然是相同的错误。 这是我的命令:
jarsigner -keystore NONE -certchain subca.pem -tsa "http://server.time.pl" -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" "fileToSign.jar" "Pa Z\u00f3wka"
证书存储在智能卡上,这就是我使用 PKCS11 和 -keystore NONE 的原因。 Provider.cfg 包含智能卡的插槽设置。
我也有相同的证书,没有任何变音符号,存储在另一张卡上并且可以正常工作。
任何建议都非常感谢。
这不会起作用。您需要编辑证书中的 CKA_LABEL 字段,使其仅包含 ASCII 字符。 在 Windows 上,您可以使用 PKCS11Admin 实用程序来执行此操作,在 Linux 上,您可以使用 pkcs11-tool。 只有这样它才会起作用。 有关如何使用 PKCS11Admin 执行此操作的说明如下(从第 11-12 页开始):https://www.files.certum.eu/documents/manual_en/Code-Signing-signing-the-code-using-tools-类似-Singtool-and-Jarsigner_v2.3.pdf