Как encyrpt сообщение с использованием файла smme.p7s

Мне нужно отправить файл секретного ключа кому-то (доверенный sysadmin) безопасно. Я предложил пару вариантов, но он ответил так:

Привет, у меня нет ни LastPass, ни GnuPGP, но я использую ssl-сертификаты – это сообщение подписано таким образом, что вы сможете отправить мне сообщение и зашифровать его с помощью открытого ключа.

  • Агент SSH не работает с частным ключом pkcs8
  • Создание отпечатков HPKP для всей цепочки сертификатов
  • Программа для дешифрования файла тени linux
  • SSH-туннелирование - локальные и удаленные случаи использования
  • Сетевое соединение / var с systemd
  • Как я могу получить shaX с кодировкой base64 в cli?
  • Я использовал 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----- 

  • Двойная загрузка системы Linux с шифрованием
  • E: Не удается найти пакет libssl-dev при попытке загрузить 32-разрядный OpenSSL на 64-битной системе
  • Использует ли QEMU / KVM инструкции Intel AES для зашифрованных изображений qcow2, если у них есть хост-процессор?
  • Отключить SSLv3 В cURL?
  • Шифровать пароль так же, как mysql
  • Как я могу сжать раздел LUKS, что делает `cryptsetup resize`?
  • 2 Solutions collect form web for “Как encyrpt сообщение с использованием файла smme.p7s”

    Ты можешь сделать

     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 . Подробности здесь .

    Да, извлечение сертификата FROM pkcs7 с помощью -print_certs верен, и если вы хотите доверять корню получателя, используйте команду cacert.org, а не cert из pkcs7.

    Некоторые пояснения / примечания:

    Дополнительные строки перед блоком cert не являются проблемой. openssl позволяет «комментировать» текст в файлах PEM до строки «—– BEGIN» (и после «—– END»), хотя это нестандартно, а другие программы часто этого не делают.

    Сообщение об ошибке «TRUSTED CERTIFICATE» несколько вводит в заблуждение. openssl фактически разрешает два варианта в файле PEM сертификата: «[X.509] СЕРТИФИКАТ» и «ДОВЕРЕННЫЙ СЕРТИФИКАТ». Первый стандарт, последний используется только в пределах openssl, а затем только редко. openssl ищет их в этом порядке, поэтому, если он не находит ни сообщения об ошибке, TRUSTED не найден. Этот формат допускает определенные атрибуты доверия в файле сертификата и отличается от наличия сертификата в каталоге хранилища доверия (или файле) openssl.

    openssl sime -encrypt НЕ проверяет, что сертификат получателя проверяется против хранилища доверия, хотя, возможно, он и должен. Если есть какая-либо возможность, полученный p7s / cert был изменен или подделан, вы должны вручную openssl verify сертификат, прежде чем использовать его, потому что, если у этого сертификата действительно есть ключ плохого парня, а не хороший парень, ваши данные могут быть дешифрованы плохим парень.

    Linux и Unix - лучшая ОС в мире.