廢話不說,先上圖。
添加數字簽名前
添加正規數字簽名後
數字簽名相關文件的後綴
.pfx一定包含或可以轉換爲所有文件,.pem可以包含或可以轉換爲所有文件但不一定全部包含或可以轉換爲所有文件,證書和公鑰通常包含在同一個文件中,.crt和.cer是同一個文件在不同平臺上的擴展名。
公鑰:.key、.crt、.cer(.crt和.cer同時包含證書和公鑰)
證書:.crt、.cer(.crt和.cer同時包含證書和公鑰)
私鑰:.key、.pvk
數字簽名文件作用
希望被特定人員解密,其他人無法篡改被保護的內容,改了也會被發現[用於加密傳輸]:
例如我給A發一封郵件,但不想讓別人更改,我可以用A的打開的鎖[公鑰]來鎖定,而A想驗證時,拿他的鑰匙[私鑰]來解密。
不希望被任何一個人解密[用於版權認證]:
例如我寫了一個軟件,B黑客在軟件中加入了病毒,我不想讓被篡改有病毒的軟件流行,我可以使用私鑰[在這裏也作爲一把沒有鑰匙的鎖]來加密軟件,任何一個人篡改後數字簽名[我的]都會消失或被替換,用戶可以甄別出這是不是我發佈的原版軟件。
格式之間的轉換
- 首先你要有一個數字簽名打包文件[.pfx],這個需要申請。本文以[email protected]爲例。
- 其次雙擊安裝,注意將“標誌此密鑰爲可導出的密鑰(M)。這將允許你在稍後備份和傳輸密鑰。”前面的選擇框選中。
- 然後在藍奏雲下載工具。
- 提取.cer
使用“數字簽名工具箱”中的“certmgr.exe”,選中證書,點擊導出,選擇“不,不要導出私鑰”,選擇導出位置和文件名。 - 以下內容全部使用OpenSSL[Windows-64 bit].rar中的OpenSSL-Win64\bin\openssl.exe來操作。
- 將.pfx文件複製到“bin”文件夾中。
- 提取.pem[同時含有證書和密鑰](請輸入3次密碼,每次輸入後回車,第一次是密碼,第二次是爲.pem設置密碼,第三次是驗證)
鍵入或修改後粘貼以下代碼,其中文件須替換爲自己的文件。pkcs12 -in [email protected] -out [email protected]
-
提取.spc[關鍵,最終簽名使用證書](.pem轉.spc)
crl2pkcs7 -nocrl -certfile [email protected] -outform der -out [email protected]
-
提取.crt(.cer轉.crt,推薦)
x509 -inform DER -in [email protected] -out [email protected]
或
提取.crt(.pem轉.crt,不推薦)x509 -inform PEM -in [email protected] -out [email protected]
-
提取.key[所有密鑰](沒必要提取,不常用。)
pkcs12 -in [email protected] -nodes -out [email protected]_siyao.key
-
提取.key[公鑰&證書]
pkcs12 -in [email protected] -nokeys -nodes -out [email protected]_siyao.key
-
提取.key[私鑰](沒必要提取,不常用。)
pkcs12 -in [email protected] -nocerts -nodes -out [email protected]_siyao.key
-
提取.pvk[關鍵,提取加密私鑰](.pem轉.pvk)
rsa -in [email protected] -outform pvk -pvk-strong -out [email protected]
-
其實很好理解,“ -nokeys”就是不要私鑰,“nocerts”就是不要證書[包含公鑰]。
給軟件添加數字簽名
- 解壓“數字簽名工具箱.rar”。
- 打開SignTool\signcode.exe。
- 單擊下一步。
- 打開一個文件。
- 選擇自定義,下一步。
- 單擊“從文件選擇”,選擇密鑰,下一步。
- 瀏覽密鑰文件,選擇.pvk文件,鍵入密碼。
- 下一個隨便選,sha1更安全,但我習慣用MD5。
- 只有簽名證書,沒有其他證書。
- 不用填。
- 勾選時間戳,時間戳在證書有效期內,證書即使過期也依然可信。在這裏我提供一個免費的時間戳服務器URL:
http://timestamp.comodoca.com/ - 完成,確定。
大功告成。