OpenSSL 使用指令進行簽章和檢驗
本篇文章介紹使用 openssl 使用指令進行簽章和檢驗,例如可以使用 RSA 或 EC (ECDSA) 金鑰來簽章和檢驗。包含使用 PEM、DER 和 PVK 格式,以及使用 Base64 格式的方法。
簽章
首先我們把要簽署的訊息存在檔案裡,例如 message.txt:
1 | test |
PEM
使用私鑰來簽章,把簽章輸出到檔案:
1 | openssl dgst -sha256 -sign private.pem -out sig message.txt |
sig
為輸出的檔案名稱,-sha256
為用來簽章的演算法,可以使用下面指令來看有哪些可使用:
1 | openssl dgst -list |
會輸出下面內容:
1 | Supported digests: |
DER
如果是 DER 檔案:
1 | openssl dgst -sha256 -sign private.der -keyform DER -out sig message.txt |
PVK
如果是 PVK 檔案:
1 | openssl dgst -sha256 -sign private.pvk -keyform PVK -out sig message.txt |
檢驗
PEM
1 | openssl dgst -sha256 -verify public.pem -signature sig message.txt |
驗證成功會看到
1 | Verified OK |
失敗則是
1 | Verification Failure |
DER
1 | openssl dgst -sha256 -verify public.der -keyform DER -signature sig message.txt |
使用 Base64
上面產生的簽章是二進位資料,如果想轉成 Base64 可以用以下寫法:
簽章
1 | openssl dgst -sha256 -sign private.pem ../message.txt | openssl enc -base64 -out sig |
檢驗
先將 Base64 轉成二進位資料存到暫存的 .tmp
,再進行原來的檢驗流程:
1 | openssl enc -d -base64 -in sig -out .tmp && openssl dgst -sha256 -verify public.pem -signature .tmp message.txt && rm .tmp |
延伸閱讀
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment