Encryption
如何使用某人的 SSL smime.p7s 文件加密消息
我需要將私鑰文件安全地發送給某人(受信任的系統管理員)。我提出了幾個選擇,但他回答如下:
嗨,我既沒有 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
副檔名。詳情在這裡。