工具链接

解压密码为“解压密码:ziyuanxiaozhan@outlook.com”。

废话不说,先上图。

pem和pfx转换_pem和pfx转换

添加数字签名前

pem和pfx转换_数字签名_02

添加正规数字签名后


数字签名相关文件的后缀

.pfx一定包含或可以转换为所有文件,.pem可以包含或可以转换为所有文件但不一定全部包含或可以转换为所有文件,证书和公钥通常包含在同一个文件中,.crt和.cer是同一个文件在不同平台上的扩展名。

公钥:.key、.crt、.cer(.crt和.cer同时包含证书和公钥)

证书:.crt、.cer(.crt和.cer同时包含证书和公钥)

私钥:.key、.pvk


数字签名文件作用

希望被特定人员解密,其他人无法篡改被保护的内容,改了也会被发现[用于加密传输]:

例如我给A发一封邮件,但不想让别人更改,我可以用A的打开的锁[公钥]来锁定,而A想验证时,拿他的钥匙[私钥]来解密。

不希望被任何一个人解密[用于版权认证]:

例如我写了一个软件,B黑客在软件中加入了病毒,我不想让被篡改有病毒的软件流行,我可以使用私钥[在这里也作为一把没有钥匙的锁]来加密软件,任何一个人篡改后数字签名[我的]都会消失或被替换,用户可以甄别出这是不是我发布的原版软件。


格式之间的转换

  1. 首先你要有一个数字签名打包文件[.pfx],这个需要申请。本文以ziyuanxiaozhan@outlook.com.pfx为例。
  2. 其次双击安装,注意将“标志此密钥为可导出的密钥(M)。这将允许你在稍后备份和传输密钥。”前面的选择框选中。
  3. 然后在蓝奏云下载工具。
  4. 提取.cer
    使用“数字签名工具箱”中的“certmgr.exe”,选中证书,点击导出,选择“不,不要导出私钥”,选择导出位置和文件名。
  5. 以下内容全部使用OpenSSL[Windows-64 bit].rar中的OpenSSL-Win64\bin\openssl.exe来操作。
  6. 将.pfx文件复制到“bin”文件夹中。
  7. 提取.pem[同时含有证书和密钥](请输入3次密码,每次输入后回车,第一次是密码,第二次是为.pem设置密码,第三次是验证)
    键入或修改后粘贴以下代码,其中文件须替换为自己的文件。
pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -out ziyuanxiaozhan@outlook.com.pem
  1. 提取.spc[关键,最终签名使用证书](.pem转.spc)
crl2pkcs7 -nocrl -certfile ziyuanxiaozhan@outlook.com.pem -outform der -out ziyuanxiaozhan@outlook.com.spc
  1. 提取.crt(.cer转.crt,推荐)
x509 -inform DER -in ziyuanxiaozhan@outlook.com.cer -out ziyuanxiaozhan@outlook.com.crt



提取.crt(.pem转.crt,不推荐)

x509 -inform PEM -in ziyuanxiaozhan@outlook.com.pem -out ziyuanxiaozhan@outlook.com.crt
  1. 提取.key[所有密钥](没必要提取,不常用。)
pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -nodes -out ziyuanxiaozhan@outlook.com_siyao.key
  1. 提取.key[公钥&证书]
pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -nokeys -nodes -out ziyuanxiaozhan@outlook.com.key
  1. 提取.key[私钥](没必要提取,不常用。)
pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -nocerts -nodes -out ziyuanxiaozhan@outlook.com_siyao.key
  1. 提取.pvk[关键,提取加密私钥](.pem转.pvk)
rsa -in ziyuanxiaozhan@outlook.com.pem -outform pvk -pvk-strong -out ziyuanxiaozhan@outlook.com.pvk
  1. 其实很好理解,“ -nokeys”就是不要私钥,“nocerts”就是不要证书[包含公钥]。

给软件添加数字签名

  1. 解压“数字签名工具箱.rar”。
  2. 打开SignTool\signcode.exe。
  3. 单击下一步。
  4. 打开一个文件。
  5. 选择自定义,下一步。
  6. 单击“从文件选择”,选择密钥,下一步。
  7. 浏览密钥文件,选择.pvk文件,键入密码。
  8. 下一个随便选,sha1更安全,但我习惯用MD5。
  9. 只有签名证书,没有其他证书。
  10. 不用填。
  11. 勾选时间戳,时间戳在证书有效期内,证书即使过期也依然可信。在这里我提供一个免费的时间戳服务器URL:
    http://timestamp.comodoca.com/
  12. 完成,确定。

大功告成。