OpenSSL 對電子檔簽章與驗簽方式
- OpenSSL 版本 : openssl-0.9.8b-10.el5_2.1
- 假設簽章者憑證為 jonathan.crt 密鑰檔為 jonathan.key
- jonathan.crt 的發行者憑證為 RootCA.crt
- 對電子檔簽章作法:
- 被簽章的電子檔為 test.txt
- 預計簽完檔案為 test.txt.sig
openssl smime -sign -inkey jonathan.key -signer jonathan.crt -in test.txt -out test.txt.sig
如果想將簽章檔包成 pkcs#7 格式可以直接下 -pk7out 的語法
[casrv@G2B2C-reg dev_caserver]$ openssl smime -pk7out -in test.txt.sig -out test.txt.p7b [casrv@G2B2C-reg dev_caserver]$ ls -lt 總計 176 -rw-rw-r-- 1 casrv casrv 2204 5月 13 11:38 test.txt.p7b -rw-rw-r-- 1 casrv casrv 3794 5月 13 11:37 test.txt.sig : : [casrv@G2B2C-reg dev_caserver]$ cat test.txt.p7b -----BEGIN PKCS7----- MIIGOAYJKoZIhvcNAQcCoIIGKTCCBiUCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3 DQEHAaCCA48wggOLMIICcwIJALh6V0W0o+9+MA0GCSqGSIb3DQEBBQUAMIGHMQsw CQYDVQQGEwJUVzEPMA0GA1UECBMGVGFpd2FuMQ8wDQYDVQQHEwZUYWlwZWkxDDAK : : ZH2c77SSfrzfkz+HztNtweNWbbcskVkihHrhjlXAQR4xLnRlg8xR+kxUvuxl8Z5a kxB+wggrFifZpRiUfiX8bAzHlvIWtOrufLAe2hiKT+bhrowqErqJo8XXR5u3eHsL vtiUmxJWh5vtQLf5 -----END PKCS7-----
- 對電子檔驗簽作法:
- 只要由 RootCA.crt 發行的憑證所簽章的檔案都可被信任
- 有含簽章的電子檔案為 test.txt.sig
- 驗簽成功就取出被簽章的電子檔 test.txt 簽署者憑證檔 test.txt.crt
openssl smime -verify -in test.txt.sig -signer test.txt.crt -out test.txt -CAfile RootCA.crt
當驗證失敗時, 會產生 0 byte 的 test.txt 檔案
[casrv@G2B2C-reg tmp]$ openssl smime -verify -in test.txt.sig -signer test.txt.crt -out test.txt -CAfile /var/www/html/dev_ca/jonathan.crt Verification failure 17047:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:231:Verify error:unable to get local issuer certificate [casrv@G2B2C-reg tmp]$ ls -lt 總計 188 -rw-rw-r-- 1 casrv casrv 0 5月 13 11:32 test.txt :