昨天我花了几个小时尝试使用 X509 证书(来自 thawte 的“免费邮件”证书之一)对一个短文件进行数字签名。我终于让 openssl 将其签名为 SMIME 消息,但我无法成功验证它,而且它采用 SMIME 格式——我无法访问实际上可以发送 SMIME 文件的“sendmail”程序。
我只想通过简单的剪切和粘贴创建一些“可摘录”的文件,例如:
===BEGIN SIGNED DOCUMENT===
===BEGIN DOCUMENT===
blah blah blah this is the plaintext ...
===END DOCUMENT===
===BEGIN SIGNATURE===
AFab12121abadAF ...
===END SIGNATURE===
===END SIGNED DOCUMENT===
或者,我想我可以制作一个包含原始文件和签名的 .zip 文件。
所以我想我的要求是:
- 输入明文 = 任意文件
- 输入signkey =来自X509证书
- 输出 = 我可以通过剪切和粘贴或附加单个 .zip 文件轻松地通过电子邮件发送给其他人的东西
- 程序 = 免费和开源的东西,例如 openssl 或 gpg
- 程序!=一个神奇的 GUI,我不明白发生了什么
- 能够轻松使用程序从输入中生成输出
- 能够轻松地从输出中提取明文(例如,直接通过眼睛或作为 .zip 文件的一个组件)
- 能够验证明文是否由 X509 证书的被授予者(即我)签署,并且证书的授予者 (CA) 是知名 CA……假设我是一个保持证书安全的理性人被其他方使用(否则有人可以像我一样签名)。
有没有关于 X509 证书的好教程以及它们在实践中如何用于这些东西?我有 Schneier 的“应用密码学”的第 2 版,并且在密码算法 + 协议方面有相当多的经验,但对 X509 知之甚少,我真的很困惑证书实际上是什么. (换句话说,“证书是颁发方 CA 的加密断言,即证书中指定的方 X 是 CA 已知的身份?”和“证书使其持有者能够_____”)
当我得到一个时,它会显示在 Firefox 的证书管理器的“您的证书”选项卡中,我可以将其导出并使用 openssl 读取它,但我想确保它不会以任何其他人可以使用的方式存储 w /o 知道证书。密码——我真的很困惑,因为似乎有些证书只有公钥,而其他证书有加密的私钥。
是否有一个围绕 openssl 的良好、简单的 GUI 包装器,可以让您解释它在做什么?
编辑: thawte 不容易让你直接使用证书请求;相反,它与 Web 浏览器(我使用 Firefox)对话,并生成私钥并处理所有证书协议。所以我可以将它导出为 PKCS12 文件,但我不确定如何使用它。