linux - 如何使用来自 GoDaddy(使用 Ubuntu)的 .SPC 或 .PEM 文件对代码(.EXE 文件)进行签名?

标签 linux exe code-signing code-signing-certificate

<分区>

我已经看到很多关于这个问题的问题和答案,我已经尝试了所有这些问题和答案,但都没有成功。

Godaddy 仅向我提供 .SPC 和 .PEM 文件。当然,我有我的 .key 文件和我用来申请证书的 .csr。

以前(使用其他公司提供的其他代码签名证书)我有一个 pfx 文件,用于创建 .spc 和 .der 文件,最后我使用 osslsigncode 对我的可执行文件进行签名,但这不再有效。

目前,当我尝试从我的 .pem 文件创建一个 .der 文件时:

openssl rsa -outform der -in cert.pem -out cert.der

我收到以下错误:

unable to load Private Key 139732378019488:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: ANY PRIVATE KEY

所以我要做的是将我的 .key 添加到我的 .pem 文件中:

cat myKey.key cert.pem > cert_key.pem

通过这种方式,openssl 正在创建 .der 文件,我可以使用 osslsigncode、godaddy 提供的 .spc 文件和创建的 .der 文件对可执行文件进行签名:

osslsigncode -spc gd.spc -key cert.der -in unsigned_exe.exe -out signed_exe.exe

至此exe文件已经成功签名,但是当我在windows上测试时出现了错误,因为它不识别签名。检查文件属性我发现代码签名者是“Go Daddy Class 2 Certification Authority”,证书详细信息显示“主题中没有签名”

我也曾尝试执行所描述的相同过程但未成功,但使用的 pem 文件仅包含我的 .key 和我公司的证书(最后一个包含在 godaddy cert.pem 中)。这种情况下的结果是相似的。 Windows 在执行时不显示证书,但在文件属性中我能够找到代码签名者是我的公司。当我检查证书详细信息时,它说的是一样的:“主题中没有签名”

最后,我尝试执行此问题中描述的相同过程(使用单声道符号代码):Signing Windows application on Linux-based distros

最佳答案

使用pvk2pfx.exe 工具将.spc.pvk 文件转换为.pfx 文件帮我解决了。

转换命令如下:

osslsigncode sign -pkcs12 codesign.pfx -askpass -n "MyApp" -i "CompanyName" -t "http://tsa.starfieldtech.com" -h sha2 -in srcfile.exe -out signedfile.exe

关于linux - 如何使用来自 GoDaddy(使用 Ubuntu)的 .SPC 或 .PEM 文件对代码(.EXE 文件)进行签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24696021/

相关文章:

linux - 如何使用 substr 比较替换字段

java - 如何使用 Ant 检查已签名的 jar 文件?

iphone - 无需向 Apple 支付 99 美元即可在 iPhone 上测试应用程序

linux - 以 Mbps 为单位的带宽计算

linux - 在 linux 中添加系统调用时修改 syscall_table.S

linux - 如何在 Linux 中捕获同名但不同扩展名的文件并删除它们

c++ - 在 Qt 4.10.2 中创建 .exe 文件

windows - 无法终止 Perl 中的进程

java - 从文件位置在 Java 中运行 .exe 文件

Gradle uploadArchives 任务无法读取 key