如何使用X509证书(用简单验证签名文件,+其他问题)

时间:2008-12-12 14:45:53

标签: cryptography openssl x509

昨天我花了几个小时尝试使用X509证书(来自thawte的“freemail”证书之一)对短文件进行数字签名。我终于得到openssl将其签名为SMIME消息,但我无法成功验证它,并且它是SMIME格式 - 我无法访问实际发送SMIME文件的“sendmail”程序。

我只想创建一些通过普通剪切& amp;“excerptable”的文件。粘贴,如:

===BEGIN SIGNED DOCUMENT===
===BEGIN DOCUMENT===
blah blah blah this is the plaintext ...
===END DOCUMENT===
===BEGIN SIGNATURE===
AFab12121abadAF ...
===END SIGNATURE===
===END SIGNED DOCUMENT===

或者我想我可以创建一个包含原始文件和签名的.zip文件。

所以我猜我的要求是:

  1. 输入明文=任意文件
  2. 输入signkey =来自X509证书
  3. output =我可以通过剪切和粘贴或附加单个.zip文件轻松地通过电子邮件发送给其他人
  4. program =免费的东西&像openssl或gpg这样的开源
  5. program!=一个神奇的GUI,我不明白发生了什么
  6. 能够轻松使用该程序从输入生成输出
  7. 能够轻松地从输出中提取明文(例如,直接通过眼睛或作为.zip文件的组件)
  8. 能够验证明文是否由X509证书的受让人(即我)签署,并且证书的设保人(CA)是一个众所周知的CA ...假设我是一个理性的人保持证书不被其他方使用(否则有人可以像我一样签名)。
  9. 是否有一个很好的X509证书教程和他们如何在实践中使用这些东西?我有Schneier的第二版“应用密码学”和在加密算法+协议方面有相当多的经验,但对X509一点也不了解,我真的很担心证书实际上是什么。 (换句话说,“证书是发证方CA的加密断言,证明在证书中指定的X方是CA已知的身份?”和“证书使其承载能够_____”)

    当我拿到一个它出现在Firefox的证书管理器的“你的证书”选项卡中,我可以导出它并用openssl读取它,但我想确保它不以任何其他人可以存储的方式存储知道证书时使用它。密码 - 我真的很困惑,因为似乎有些证书只有公钥和&其他人加密了私钥。

    openssl是否有一个好的,简单的GUI包装器,可以让它解释它在做什么?


    编辑:thawte不会让您直接使用证书请求;相反,它与网络浏览器(我使用Firefox)和&生成私钥并处理所有证书协议。所以我可以将其导出为PKCS12文件,但我不确定如何使用它。

2 个答案:

答案 0 :(得分:2)

  

所以我可以将其导出为PKCS12文件,但我不确定如何使用它。

如果您使用openssl工具,则可以使用命令

openssl pkcs12 -in file.p12 -out file.pem

将其转换为pem格式。

修改

  

我无法弄清楚什么是PEM和PKCS12以及所有这些事情彼此不同

PKCS#12文件只是证书和密钥的容器。如果要查看其中包含的内容(至少除了加密部分),您可以使用dumpasn1之类的工具。从浏览器导出的PKCS#12文件将包含加密格式的私钥,证书以及形成可信CA的链所需的CA证书。

同样,PEM文件可以包含证书和密钥。在PEM文件中,证书和密钥是base64编码的,并放在一些文本分隔符中(PKCS#12文件使用名为ASN.1的二进制编码来构造文件 - 您可以将ASN.1视为XML的二进制形式。您遇到的大多数加密结构都将使用ASN.1编码。除此之外,格式之间唯一真正的区别是PKCS#12包含完整性检查 - 否则格式是等效的。

OpenSSL最适合PEM,而大多数浏览器和电子邮件应用程序都期望PKCS#12,但您可以在格式之间自由转换。

答案 1 :(得分:1)

首先,您可能需要了解私钥,公钥和证书之间的区别。证书是在“公钥XX属于YY人”的声明中具有CA私钥的签名。如果您使用私钥签名,则可以使用您的公钥验证签名,并且信任CA的第三方可以断定签名是由您签名的。

如果您生成S / MIME邮件并将其作为扩展名为.p7s的文件附加,则大多数邮件程序可能会验证它。

如果你想完全控制你正在做的事情,我的经验是围绕PGP格式的工具可以让你更好地控制(与实现S / MIME协议的邮件程序相比)。