Могу ли я отправлять зашифрованную электронную почту, используя Почту и самозаверяющие сертификаты?

Я хочу иметь возможность отправлять подписанные и зашифрованные электронные письма между Mac, использующим Mail, и другим Mac, использующим Thunderbird, используя самозаверяющие сертификаты на обоих концах. Раньше я мог это делать, но с годами все стало сложнее с обеих сторон. Чтобы заставить Thunderbird работать, теперь мне нужно создать самозаверяющий центр сертификации, а затем использовать его для создания сертификата электронной почты. Но я не могу заставить шифрование работать на почте. (Я думаю, что Apple сломала его в Mountain Lion.) В моей связке ключей на стороне Mail у меня есть ЦС со стороны Thunderbird, который помечен как доверенный, и сертификат электронной почты, созданный этим ЦС, который говорит: «Этот сертификат действует". Но когда я создаю электронное письмо, идущее на другой Mac, кнопка шифрования недоступна.

Я где-то читал, что секрет заключается в том, чтобы добавить расширение «ключевое шифрование» при создании сертификата, и я это сделал, но это все еще не работает.

Ответы (2)

Я могу ответить только на часть этого вопроса, касающуюся Mac Mail, поскольку я не хочу тестировать часть Thunderbird.

Я просто пишу эту часть для людей, которые не знакомы с асимметричным шифрованием:

В этой форме шифрования вам нужны два ключа, закрытый и открытый. Сертификат в этом смысле является не чем иным, как открытым ключом, но он содержит больше информации, чем просто ключ, он сообщает, кто вы, ваша организация и т. д. Частный сертификат никогда не должен быть потерян и передан другим. Если это так, вам нужно начать все сначала, и человек, который украл его, может расшифровать все, поэтому сохраните его и защитите паролем. Обычно сертификаты подписываются так называемыми центрами сертификации, и они чаще всего берут деньги за свою услугу. Вот почему некоторые люди создают свои собственные ЦС и самозаверяющие сертификаты, что дешевле.

Шифрование электронной почты работает следующим образом: вы отправляете кому-то свой открытый ключ (сертификат), подписывая им свое электронное письмо. Вы можете подписать любое электронное письмо, потому что передача открытого ключа не причинит вреда. Затем этот другой человек получает ваш открытый ключ и с помощью этого ключа шифрует вам электронное письмо. С этого момента никто, кроме АНБ с возможным Квантовым компьютером, не может расшифровать это сообщение за разумное время при правильной длине ключа. Или некоторые люди проникают в настоящие библиотеки шифрования, такие как ошибка HEARTBLEED (heartbeat), которая могла быть преднамеренной, и кто знает, сколько еще таких бэкдоров существует. Сертификаты обычно имеют ограниченный срок действия и должны время от времени обновляться.

Итак, что нужно убрать: вам нужен открытый и закрытый ключ, и вы отдаете только открытый.

Вот что я сделал:

  1. Создал корневой ЦС и подписывающий ЦС (вам это не нужно, но это то, что я сделал), и я использовал для этого очень хороший учебник: Многоуровневые ЦС в http://pages.cs.wisc.edu/~ zmiller/ca-howto/

  2. Затем я изменил свой openssl.conf таким образом, что Mac Mail позволяет мне также использовать сертифицированный для шифрования электронной почты.

    Важным моментом является наличие keyUsage и extKeyUsage.

    [ v3_req ]
    
    # Extensions to add to a certificate request
    
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment,       dataEncipherment
    extKeyUsage = emailProtection, Apple .Mac email signing, Apple .mac email encryption
    

    Для людей, которым нравятся спецификации, прочитайте это https://www.ietf.org/rfc/rfc2459 , но вы не найдете в нем конкретных частей MacOS.

  3. Создал закрытый ключ и сертификат:

    openssl req -newkey rsa:4096 -keyout <e-mail>.key -config openssl.cnf -out <e-mail>.req -days 3650
    
    openssl ca -config openssl.cnf -out <e-mail>.crt -infiles <e-mail>.req
    

    Вы можете возразить, что десять лет — это слишком много для срока действия сертификата, но я хотел иметь что-то, что работает сейчас, а через 10 лет или даже раньше этот способ шифрования все равно не будет работать. Я не хотел постоянно продлевать сертификаты, так как создавал их для всей семьи.

    Если в этом процессе что-то пойдет не так, вы можете отозвать сертификат:

    openssl ca -config openssl.cnf -revoke <e-mail>.crt
    

    Еще надо создать crls, но я этого тоже не делал.

  4. Преобразованные ключи в формат p12

    openssl pkcs12 -export -in <e-mail>.crt -inkey <e-mail>.key -out <e-mail>.p12
    
  5. Импорт p12 в цепочку ключей в OS X 10.9.4 (13E28)

  6. Отмечен как доверенный

  7. Связанный сертификат с учетной записью электронной почты в настройках MacOS Mail в разделе «Информация об учетной записи» в поле «Сертификат TLS». Отправьте почту на другой почтовый адрес, у которого также есть сертификат и ключ, и подпишите сообщение с помощью моего открытого ключа, ну, MacOS Mail сделал это за меня.

  8. Получил почту и отправил обратно мою первую зашифрованную почту.

Что случилось со мной, когда я попробовал процедуру со своей женой, так это то, что символ замка в моем ответном письме на первое подписанное письмо был выделен серым цветом, и я был озадачен. Это означало, что я не мог шифровать почту. Причина заключалась в том, что я получил подписанное письмо, которое мне прислала моя жена, но я не отметил здесь подпись как доверенную в цепочке ключей MacOS, так как все полученные подписи также попадают туда. После того, как он был отмечен как доверенный и перезапущен Mail, все заработало нормально.

Возможно, кто-то или даже тот, кто спрашивает, может добавить к этому ответу часть Thunderbird.

Я думаю, что фактическая вещь, которая отсутствует в этом вопросе, заключается в следующем: extKeyUsage = emailProtection, подпись электронной почты Apple .Mac, шифрование электронной почты Apple .mac и, возможно, доверие к полученной подписи. Я просто хотел быть настолько откровенным, чтобы убрать часть страха, который по понятным причинам создает этот процесс. Поддержка шифрования в наши дни все еще плохая, и я думаю, что люди должны начать использовать шифрование и перестать жаловаться на людей, которые за ними шпионят, но я понимаю, что препятствие для шифрования все еще слишком велико, никто не может их винить.
Вам не нужны эти расширения. Вроде ни на что не влияют. Почта Apple продолжала жаловаться на невозможность использовать созданные мной сертификаты для шифрования. Я думаю, что критическими битами, которые мне не хватало, были dataEncipherment в keyUsage и наличие emailAddress=<foo> в строке темы. Ранее перемещал их в altSubjectName.
Интересно, что я узнал, что на самом деле вам нужно шифрование ключей, а не шифрование данных из-за того, что S/MIME использует симметричный ключ для шифрования данных, а затем шифрует этот симметричный ключ с помощью асимметричного ключа из сертификата. Нашел это объяснение здесь .

Есть ли причина, по которой вы пытаетесь использовать именно этот подход?

Если ваш реальный вопрос заключается в том, как отправить подписанную и зашифрованную электронную почту, я использую GPG (через GPGTools). Есть подключаемый модуль, который работает с Thunderbird, но я использую Apple Mail.