【问题标题】:How can I specify an E-Mail address when signing a binary file?签署二进制文件时如何指定电子邮件地址?
【发布时间】:2015-02-17 14:30:58
【问题描述】:

我正在使用signtool 对各种.exe/.dll 文件应用数字签名。但是,在 Windows 资源管理器中查看签名文件显示没有设置电子邮件地址,就像在这个屏幕截图中一样(我绝不隶属于“派拉蒙软件英国有限公司”——这个屏幕截图只是我的第一个结果通过谷歌找到):

但是,我还看到了其他屏幕截图,显示以某种方式定义电子邮件地址是可能的(即使它是伪造的,就像在这种情况下一样):

这个E-mail地址是否可以通过signtool设置,或者它实际上是证书本身的属性(即购买证书时需要指定)?

【问题讨论】:

  • 我希望它是您要签名的证书的属性,您需要获取包含您的电子邮件的新证书。在使用 OpenSSL 生成 CSR 时,我肯定看到过 in 字段。

标签: windows email digital-signature signtool


【解决方案1】:

从证书的subject distinguished name 字段中的emailAddress 中提取的电子邮件属性。

您可以使用 openssl 进行测试以生成自签名证书(然后您可以生成带有 emailAddressCSR 并发送到证书颁发机构以生成有效的最终实体证书)。要对其进行测试,您可以执行以下步骤:

使用follow openssl命令生成自签名证书

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

然后您将被要求输入以下参数(全部用于证书的主题):

为避免出现此提示,您可以在上一个命令中使用-subj 直接指定subject,如下所示:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -subj "/C=ES/ST=58/L=Barcelona/O=yourOrgName/OU=yourDept/CN=yourAppName/emailAddress=myEmail@test.com"

现在您可以使用以下命令从生成的密钥和证书生成p12(或pfx):

openssl pkcs12 -export -out myTestWithMail.pfx -inkey key.pem -in cert.pem

现在您有一个p12 (myTestWithMail.pfx),您可以使用以下signtool 命令来签署exedll。例如,我签署notepad++.exe(如您在问题中链接的示例):

signtool.exe sign /f C:\Users\Albert\myTestWithMail.pfx /p 1234 "C:\Program Files (x86)\Notepad++\notepad++.exe"

请注意,/f 是您的签名密钥的路径,/p 是您的密钥的密码。

现在您可以在您签名的文件中看到电子邮件:

所以最后,如果您需要来自证书颁发机构的证书,您必须生成CSR,指定emailAddress,例如使用openssl 命令:

openssl req -new -newkey rsa:2048 -nodes -out yourAppName.csr -keyout yourAppName.key -subj "/C=ES/ST=58/L=Barcelona/O=yourOrgName/OU=yourDept/CN=yourAppName/emailAddress=myEmail@test.com"

或者不指定-subj参数,并在提示时输入正确的主题专有名称值:

openssl req -new -newkey rsa:2048 -nodes -out yourAppName.csr -keyout yourAppName.key

希望这会有所帮助,

【讨论】:

    【解决方案2】:

    简短回答:,电子邮件地址是证书的一部分,,您不能在签署二进制文件时指定它。

    长答案:@albciff 指出了如何生成具有关联电子邮件地址的证书,但如果您从Thawte 购买证书,您似乎不走运;我的同事向我们的证书提供商 (Thawte) 的技术支持人员提出了这个确切的问题,他们回答说:

    注册代码签名证书时,使用的电子邮件地址不是验证过程的一部分。不幸的是,由于电子邮件不是验证过程的一部分,因此它不会包含在签名代码的属性中。

    此外,技术支持向我们推荐了 this article 在“Thawte 知识中心”中解释说:

    查看签名代码的属性时,电子邮件地址始终显示为“不可用”。这是因为证书验证了组织,但不需要有关组织电子邮件地址的信息。因此,我们验证了组织,但尚未验证电子邮件。这绝不会降低您 ID 的价值或实用性。

    因此不仅电子邮件地址是证书的一部分,您是否可以将电子邮件地址与证书相关联还取决于证书的颁发者。

    【讨论】:

    • @FrerichRabbe 正如我所说,从技术上讲这是可能的,但对于某些证书颁发机构,您不能使用 emailAddress,因为他们无法验证它......至少使用 Thawte...@这种情况下的 987654325@ 行为对我来说听起来很荒谬,因为他们正在验证所有其他数据(企业等)并最终颁发证书......为什么他们无法验证 email?。无论如何,正如您所说,您可以尝试使用其他证书颁发机构。
    猜你喜欢
    • 2011-02-09
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多