Encryption

如何使用某人的 SSL smime.p7s 文件加密消息

  • March 5, 2014

我需要將私鑰文件安全地發送給某人(受信任的系統管理員)。我提出了幾個選擇,但他回答如下:

嗨,我既沒有 LastPass 也沒有 GnuPGP,但我使用的是 ssl 證書 - 此消息已使用此類證書進行簽名,因此您可以向我發送消息並使用我的公鑰對其進行加密。

我使用 openssl 獲取他的證書:

openssl pkcs7 -in smime.p7s -inform DER -print_certs

證書由以下機構頒發:

issuer=/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org

(Firefox 沒有來自 cacert.org 的根證書。)

現在,我如何加密我希望發送給他的密鑰文件?我更喜歡使用 Ubuntu 中提供的命令行工具。

@lgeorget:

$ openssl pkcs7 -inform DER -outform PEM -in smime.p7s -out smime.pem
$ openssl smime -encrypt -text -in /home/myuser/.ssh/mykeyfile smime.pem 
unable to load certificate
139709295335072:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE

$ openssl pkcs7 -in smime.p7s -inform DER -print_certs
subject=/CN=Wojciech Kapcia/emailAddress=someone@example.com/emailAddress=someone@example.com
issuer=/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
-----BEGIN CERTIFICATE-----
MIIFzjCCA7agAwIBAgIDDR9oMA0GCSqGSIb3DQEBBQUAMHkxEDAOBgNVBAoTB1Jv
b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
dEBjYWNlcnQub3JnMB4XDTEzMDQxODA3NDEzNFoXDTE1MDQxODA3NDEzNFowcDEY
MBYGA1UEAxMPV29qY2llY2ggS2FwY2lhMSkwJwYJKoZIhvcNAQkBFhp3b2pjaWVj
[snip]
N1lNLq5jrGhqMzA2ge57cW2eDgCL941kMmIPDUyx+pKAYj1I7IibN3wcP1orOys3
amWMrFRa30LBu6jPYy2TeeoQetKnabefMNE3Jv81gn41mPOs3ToPXEUmYU18VZ75
Efd/qu4SV/3SMdySSNmPAVQdXYAxBEXoN5b5FpUW7KeZnjoX4fkEUPeBnNwcptTC
d1w=
-----END CERTIFICATE-----

你可以做

openssl smime -encrypt -text -in <file> smime.p7s

<file>您要加密的文件在哪裡。如果文件smime.p7s是 DER 格式而不是 PEM,則必須使用以下命令進行轉換:

openssl pkcs7 -inform DER -outform PEM -in smime.p7s -out smime.pem

您獲得了一個可以發送給系統管理員的文件。如果您足夠勇敢,您可以刪除-text並使用選項-to,-subject等來獲取可以直接發送到 SMTP 伺服器的有效電子郵件文件。

如果您用於加密的證書的根證書未被您的作業系統辨識但您信任它,您可以將其添加到證書庫中。

cp smime.pem /usr/local/share/ca-certificates/certificate.crt
sudo update-ca-certificates

證書必須具有.crt副檔名。詳情在這裡

引用自:https://unix.stackexchange.com/questions/118265