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

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

Привет, у меня нет ни 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----- 

  • Как я могу получить поддержку TLSv1.2 в Apache на RHEL6 / CentOS / SL6?
  • OPENSSL_1.0.0 не найден при запуске PyPy 4.0.1 на Amazon Linux (AWS EC2)
  • Загрузить и проверить цепочку сертификатов
  • Как расшифровать сообщение с помощью командной строки openssl?
  • Как зашифровать вывод ffmpeg при генерации фрагментов видео?
  • Linux эквивалент «доверенных корневых центров сертификации» в Windows?
  • libcrypto.so.1.0.0: информация о версии отсутствует (требуется /opt/Android/Sdk/cmake/3.6.3155560/bin/cmake)
  • Репозитории в стиле Debian и RedHat скомпрометированы ошибкой Heartbleed OpenSSL?
  • 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 сертификат, прежде чем использовать его, потому что, если у этого сертификата действительно есть ключ плохого парня, а не хороший парень, ваши данные могут быть дешифрованы плохим парень.

    Interesting Posts

    Как переименовать все файлы со специальными символами и пробелами в каталоге?

    В каком каталоге хранятся сценарии, которые запускаются с новыми установками ядра?

    Что означают эти коды в «diff» и как избавиться от них?

    Выпущен chmod 666 * в домашнем каталоге, проблемы с разрешениями, вызванные всеми файлами

    Разница между $ 1, $ {1} и $ "1" в awk

    Изменение рендеринга шрифтов после обновления с Fedora 25 до 26

    Любой сайт, который предлагает интерактивный опыт работы с средами GNU / Linux Desktop?

    Консольные TTY-дисплеи на встроенном мониторе Intel HD3000 вместо монитора NVidia GPU

    Как подключиться к Tar с помощью BASH?

    Проверка производительности алгоритма перегрузки в FreeBSD

    Shell сценарий синтаксические ошибки messsages "неожиданный конец файла" и "неожиданный EOF при поиске соответствия` "'"

    Устанавливает ли компьютер установки на производительность?

    Новое перегрузочное состояние ноутбука – концентратор

    Как отличить два идентичных USB-накопителя?

    В zsh, в чем смысл идиомы '$ == *'

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