我想使用我的网站 SSL 证书并签署一条消息,以便其他人可以使用我的网站 SSL 证书和我的消息并验证它是使用我的证书签署的。
如何使用我的 SSL 网站证书签署消息?
答案1
事实证明,这很简单。功劳归于https://stackoverflow.com/a/18359743/1045881。我只是为像我这样的新手重写了它。
假设该网站是example.com
视窗
获取证书
如果您是签名方,您可以控制您的证书。您可以按照以下说明进行操作:https://www.thawte.nl/en/support/manuals/microsoft/all+windows+servers/export+private+key+or+certificate/
这将为您提供私钥和以下步骤所需的证书。
如果您只是验证方,您可以单击浏览器中网址旁边的锁并查看证书,并将其以 base64 格式导出到 crt 或 cer 文件。文件名并不重要,但最好取domain.crt
一个好名字。
安装 openssl
安装 openssl。我使用了https://indy.fulgan.com/SSL/推荐给我https://wiki.openssl.org/index.php/Binaries. 将其解压到 openssl 安装文件夹中。我将其命名为 openssl 文件夹。
运行 openssl
只需转到 openssl 文件夹并openssl
键入并按回车键即可。现在您处于openssl
提示符中。
符号
您需要您的私钥。它看起来像这样:
-----BEGIN RSA PRIVATE KEY-----
(bunch of base64 text)==
-----END RSA PRIVATE KEY-----
例如,将其保存在 中example.key
。但文件名并不重要,只是有帮助而已。
然后将消息保存到名为的文件中message.txt
。它可以是空的。文件名并不重要。
然后在你的 openssl 文件夹(你提取二进制文件的位置)中,运行
dgst -sha256 -sign example.key -out signature.txt message.txt
它使用消息和密钥来产生签名。
message+ key=>signature
核实
您将需要该网站的证书。它看起来像这样:
-----BEGIN CERTIFICATE-----
(bunch of base64)==
-----END CERTIFICATE-----
将其保存到example.crt
。名称无所谓。
首先,您需要从证书文件(example.crt
)创建一个公钥,如下所示:
x509 -in example.crt -pubkey -noout -out example.pub
这将使用证书来创建公钥。
certificate=>public key
然后您可以像这样验证该消息:
dgst -sha256 -verify example.pub -signature signature.txt -out result.txt message.txt
它使用公钥和签名来验证消息,并将验证结果放入文件中result.txt
。
public key+ signature+ message=>result
result.txt
将包含“验证成功”或“验证失败”。
Linux
说明即将发布。我认为除了一些小语法外,它们非常相似。