以下命令用于通過 openssl 對字串進行簽名:
smime -sign -signer cert.crt -inkey key.key -engine gost -binary -noattr
給定一個據說在 self 中包含密鑰的 .cer 檔案,我如何執行相同的命令?
我假設有兩個選擇:
- 重寫命令以使用內部密鑰
- 將 .cer 檔案轉換為 .crt 并從中提取 .key 以便在不重寫現有命令的情況下使用
更新:檔案內部如下:(使用openssl x509 -in cert.cer -noout -text, 用 X_X_X 替換敏感資料):
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
X_X_X
Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)
Issuer: X_X_X
Validity
X_X_X
X_X_X
Subject: X_X_X
Subject Public Key Info:
Public Key Algorithm: GOST R 34.10-2012 with 256 bit modulus
Unable to load Public Key
842D0000:error:03000072:digital envelope routines:X509_PUBKEY_get0:decode error:crypto\x509\x_pubkey.c:458:
842D0000:error:03000072:digital envelope routines:X509_PUBKEY_get0:decode error:crypto\x509\x_pubkey.c:458:
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement
X509v3 Subject Alternative Name:
othername: title::<unsupported>
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication, 1.2.643.2.1.6.8.5, 1.2.643.3.61.502710.1.6.3.2, 1.2.643.3.251.1.1, 1.2.643.3.251.3
X509v3 Certificate Policies:
Policy: Class of Signing Tool KC1
1.2.643.100.114:
...
Signing Tool of Subject:
X_X_X
Signing Tool of Issuer:
signTool : X_X_X
cATool : X_X_X
signToolCert: X_X_X
cAToolCert : X_X_X
X509v3 CRL Distribution Points:
Full Name:
X_X_X
Full Name:
X_X_X
Authority Information Access:
CA Issuers - X_X_X
CA Issuers - X_X_X
X509v3 Subject Key Identifier:
X_X_X
X509v3 Authority Key Identifier:
keyid:X_X_X
DirName:X_X_X
serial:X_X_X
Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)
Signature Value:
X_X_X
uj5u.com熱心網友回復:
我想有幾點需要注意。
檔案后綴
首先,應該注意的是,問題中沒有像“.crt 或 .cer 檔案”這樣的建議。這些只是檔案后綴,您無法從中得出實際的檔案格式。
例如,.cer在 Windows 中創建的檔案通常為 DER(二進制)格式,而 openssl 默認為 PEM(base-64 文本)格式。.crtWindows 中更常用的后綴也是如此。其他后綴是.der并且.pem表明它們的后綴和格式匹配。
openssl可以處理這兩種格式。您可以使用or選項openssl告知輸入格式。-inform der-inform pem
私鑰
我假設您要簽署電子郵件,因為您正在使用該smime選項(盡管您說的是簽署字串,但在您的背景關系中可能是相同的)。
為了簽署訊息,您需要一個私鑰。如果您獲得的 S/MIME 證書檔案明顯包含私鑰(有時稱為私有證書),則不必先提取密鑰。只是不要使用該-inkey選項。
參考自openssl smime 檔案:
如果未指定此選項,則私鑰必須包含在使用 -recip 或 -signer 檔案指定的證書檔案中。
要使用 PEM 格式的證書創建明文簽名訊息,請使用
openssl smime -sign -in message.txt -text -out mail.msg -signer cert.crt
如果證書檔案包含私鑰,則不能是 DER 格式,因為 DER 格式只能保存 1 個物件,因此證書和私鑰需要位于單獨的 DER 檔案中。另請參閱有關 PEM 和 DER 之間區別的答案。(感謝 dave_thompson_085 糾正我。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/508670.html
標籤:ssl加密命令ssl 证书微笑
上一篇:TLS1.3解密如何作業?
下一篇:如何制作多級圖表列標簽
