标志 是用于Microsoft Authenticode代码签名的开源,独立于平台的Java工具。 Jsign易于与Maven,Gradle和Ant之类的构建系统集成,或者可以直接在命令行中使用。
在本操作方法中,我们将介绍使用 标志 从Linux命令行 OV / IV代码签名 和 EV代码签名。 由于Jsign基于Java,因此您也可以在Windows和MacOS系统上使用它。
安装Jsign
首先,您必须下载并安装Jsign。 的 Jsign网站 包括指向Debian和RPM软件包的链接,以便在大多数流行的Linux系统上轻松安装,以及 .jar
文件中。
OV / IV代码签名
对于标准的OV / IV代码签名,您可以使用存储在Java密钥库或PKCS#12(PFX)文件中的证书。 SSL.com提供 代码签名证书 以PKCS#12格式显示,因此在我们的示例中将使用该格式。 在下面的所有代码示例中,用实际值替换ALL-CAPS中显示的值。
- 首先,使用
keytool
命令获取alias
签名时使用的值:keytool-列表-v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
- 检查您的输出
keytool
以开头的行的命令Alias name:
.密钥库类型:PKCS12密钥库提供者:SUN您的密钥库包含1个条目别名:1创建日期:18年2021月4日条目类型:PrivateKeyEntry证书链长度:XNUMX ...
在上面的示例中,
Alias name
is1
. - 使用如下命令对文件签名并加时间戳:
jsign
系统范围内安装的命令:jsign --keystore KEYSTORE.p12-别名别名--storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161文件到签名
- 与Jsigner
.jar
文件:java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias别名--storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-标志
- 如果命令成功执行,则应该看到如下输出:
将Authenticode签名添加到example.exe
EV代码签名
您还可以将Jsign与EV代码签名证书一起使用。 此处的示例使用SSL.com EV代码签名证书 安装在 FIPS 140-2 验证的安全密钥 USB 令牌.
- 首先,请确保 OpenSC 已安装在您的系统上,因此它可以通过PKCS#11 API与您的令牌通信。 在基于Debian的发行版(如Ubuntu)上,您可以使用以下命令安装OpenSC:
apt
:sudo apt安装opensc
- 接下来,创建一个配置文件。 文件名是任意的,但是对于下面的示例命令,我们将使用
eToken.cfg
。 请注意,opensc-pkcs11.so
可能在您的OpenSC安装中会有所不同,因此请在创建配置文件之前进行检查。名称= OpenSC-PKCS11描述=通过OpenSC库的SunPKCS11 = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- 使用
keytool
命令获取alias
签名时使用的值:keytool-列表-v -keystore无-storetype PKCS11 -storepass令牌-providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- 检查您的输出
keytool
以开头的行的命令Alias name:
。 如果令牌包含多个证书,请对照证书检查输出中的有效日期和颁发者。 请注意,通过SSL.com在YubiKey上颁发的EV代码签名证书应具有别名:Certificate for PIV Authentication
.别名:用于PIV身份验证的证书条目类型:PrivateKeyEntry证书链长度:1证书[1]:所有者:OID.1.3.6.1.4.1.311.60.2.1.3 = US,OID.1.3.6.1.4.1.311.60.2.1.2 .2.5.4.15 =内华达州,OID.20081614243 =私人组织,CN = SSL公司,SERIALNUMBER = NV2,O = SSL公司,L =休斯顿,ST = TX,C =美国发行人:CN = SSL.com EV代码签名中级CA RSA R7299,O = SSL Corp,L = Houston,ST = Texas,C = US序列号:93f57a3bac6570c781580f63172e17有效期自:Fri Apr 12 46:04:2020 EDT 17直到:Sat Apr 12 46:04:2021 EDT XNUMX
- 使用如下命令对文件签名并加时间戳:
jsign
系统范围内安装的命令:jsign --keystore eToken.cfg --alias“用于PIV身份验证的证书” --storetype PKCS11 --storepass令牌-PIN-tsaurl http://ts.ssl.com --tsmode RFC3161文件-TO-SIGN
- 与Jsigner
.jar
文件:java -jar jsign-3.1.jar --keystore eToken.cfg --alias“用于PIV身份验证的证书” --storetype PKCS11 --storepass令牌PIN --tsaurl http://ts.ssl.com --tsmode RFC3161文件-签署
- 如果命令成功执行,则应该看到如下输出:
将Authenticode签名添加到example.exe
验证数字签名
- 您可以通过在Windows中查看签名详细信息来验证数字签名是否有效。
- 您还可以使用 签名工具 在Windows中验证数字签名。
signtool.exe验证/ pa'C:\ Users \ Aaron Russell \ Desktop \ example.exe'文件:C:\ Users \ Aaron Russell \ Desktop \ example.exe索引算法时间戳=========== ============================ 0 sha256 RFC3161已成功验证:C:\ Users \ Aaron Russell \ Desktop \ example.exe
eSigner 上的代码签名支持的最大文件大小
电子签名者快递
50 MB 用于代码签名