certificate - SSL 证书可以用于对文件进行数字签名吗?

标签 certificate signing digital-certificate

我想问一个关于数字签名的问题,我不太确定。
我不想创建一个自签名证书来用于对某些 (PDF) 文件进行签名,而是想使用已验证我的数据的 SSL 证书。

但问题是:SSL 证书可以用于数字签名文件还是以某种方式不兼容?

编辑:澄清一下,这个问题不是关于如何签署 PDF,而是关于是否可以使用(或以任何方式转换)SSL 证书来签署文件。

最佳答案

支持数字签名证书必须有digitalSignature选项是 keyUsage字段(以及 codeSigning 选项中的 extendedKeyUsage 字段,如果您想用它签署程序)。

签名可以使用现有工具或手动完成(Java 示例,您不需要它,但无论如何此代码片段可能很有用):

byte[] bytesToSign = loadMyData();
KeyStore ks = KeyStore.getInstance("pkcs12", "SunJSSE");
ks.load(new FileInputStream("cert.p12"), "passwd1".toCharArray());
PrivateKey privateKey = (PrivateKey) ks.getKey("myalias", "passwd2".toCharArray());
Signature sig = Signature.getInstance("SHA1withRSA", ks.getProvider());
sig.initSign(privateKey);
sig.update(bytesToSign);
byte[] signature = sig.sign();

要使用 openssl 制作您自己的非自签名证书,请参阅 this SO answer .

也对签署 PDF 感到好奇 - 在您的情况下,这些文件的单独哈希和还不够吗?

编辑:如果您想要任何签名,而不是现有工具的 X.509 签名,您可以从您的证书中提取 RSA key 并进行签名,而无需担心 keyUsage field 。

关于certificate - SSL 证书可以用于对文件进行数字签名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691521/

相关文章:

c# - 执行 SSL Pinning 时忽略 SslPolicyErrors 是否安全?

ssl - 如何在worklight中使用ssl证书

Java - 电子邮件签名

java - 为 Mac Store 签名 Webstart 应用程序

iis-7 - 在 IIS7 上配置 SSL/证书时出现问题

ios - Phonegap 构建错误 : no iPhone Developer/Distribution identity found on your certificate

c# - 为什么 ECDSA 会为相同的数据生成不同的签名,而 RSA 不会?

apache - 如何创建用于连接到网站的私有(private)证书

iis - SSL 证书在 digicert 上显示不同

c++ - msvcr90.dll 有时间戳吗?