Я хочу иметь возможность отправлять подписанные и зашифрованные электронные письма между Mac, использующим Mail, и другим Mac, использующим Thunderbird, используя самозаверяющие сертификаты на обоих концах. Раньше я мог это делать, но с годами все стало сложнее с обеих сторон. Чтобы заставить Thunderbird работать, теперь мне нужно создать самозаверяющий центр сертификации, а затем использовать его для создания сертификата электронной почты. Но я не могу заставить шифрование работать на почте. (Я думаю, что Apple сломала его в Mountain Lion.) В моей связке ключей на стороне Mail у меня есть ЦС со стороны Thunderbird, который помечен как доверенный, и сертификат электронной почты, созданный этим ЦС, который говорит: «Этот сертификат действует". Но когда я создаю электронное письмо, идущее на другой Mac, кнопка шифрования недоступна.
Я где-то читал, что секрет заключается в том, чтобы добавить расширение «ключевое шифрование» при создании сертификата, и я это сделал, но это все еще не работает.
Я могу ответить только на часть этого вопроса, касающуюся Mac Mail, поскольку я не хочу тестировать часть Thunderbird.
Я просто пишу эту часть для людей, которые не знакомы с асимметричным шифрованием:
В этой форме шифрования вам нужны два ключа, закрытый и открытый. Сертификат в этом смысле является не чем иным, как открытым ключом, но он содержит больше информации, чем просто ключ, он сообщает, кто вы, ваша организация и т. д. Частный сертификат никогда не должен быть потерян и передан другим. Если это так, вам нужно начать все сначала, и человек, который украл его, может расшифровать все, поэтому сохраните его и защитите паролем. Обычно сертификаты подписываются так называемыми центрами сертификации, и они чаще всего берут деньги за свою услугу. Вот почему некоторые люди создают свои собственные ЦС и самозаверяющие сертификаты, что дешевле.
Шифрование электронной почты работает следующим образом: вы отправляете кому-то свой открытый ключ (сертификат), подписывая им свое электронное письмо. Вы можете подписать любое электронное письмо, потому что передача открытого ключа не причинит вреда. Затем этот другой человек получает ваш открытый ключ и с помощью этого ключа шифрует вам электронное письмо. С этого момента никто, кроме АНБ с возможным Квантовым компьютером, не может расшифровать это сообщение за разумное время при правильной длине ключа. Или некоторые люди проникают в настоящие библиотеки шифрования, такие как ошибка HEARTBLEED (heartbeat), которая могла быть преднамеренной, и кто знает, сколько еще таких бэкдоров существует. Сертификаты обычно имеют ограниченный срок действия и должны время от времени обновляться.
Итак, что нужно убрать: вам нужен открытый и закрытый ключ, и вы отдаете только открытый.
Вот что я сделал:
Создал корневой ЦС и подписывающий ЦС (вам это не нужно, но это то, что я сделал), и я использовал для этого очень хороший учебник: Многоуровневые ЦС в http://pages.cs.wisc.edu/~ zmiller/ca-howto/
Затем я изменил свой 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.
Создал закрытый ключ и сертификат:
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, но я этого тоже не делал.
Преобразованные ключи в формат p12
openssl pkcs12 -export -in <e-mail>.crt -inkey <e-mail>.key -out <e-mail>.p12
Импорт p12 в цепочку ключей в OS X 10.9.4 (13E28)
Отмечен как доверенный
Связанный сертификат с учетной записью электронной почты в настройках MacOS Mail в разделе «Информация об учетной записи» в поле «Сертификат TLS». Отправьте почту на другой почтовый адрес, у которого также есть сертификат и ключ, и подпишите сообщение с помощью моего открытого ключа, ну, MacOS Mail сделал это за меня.
Получил почту и отправил обратно мою первую зашифрованную почту.
Что случилось со мной, когда я попробовал процедуру со своей женой, так это то, что символ замка в моем ответном письме на первое подписанное письмо был выделен серым цветом, и я был озадачен. Это означало, что я не мог шифровать почту. Причина заключалась в том, что я получил подписанное письмо, которое мне прислала моя жена, но я не отметил здесь подпись как доверенную в цепочке ключей MacOS, так как все полученные подписи также попадают туда. После того, как он был отмечен как доверенный и перезапущен Mail, все заработало нормально.
Возможно, кто-то или даже тот, кто спрашивает, может добавить к этому ответу часть Thunderbird.
Есть ли причина, по которой вы пытаетесь использовать именно этот подход?
Если ваш реальный вопрос заключается в том, как отправить подписанную и зашифрованную электронную почту, я использую GPG (через GPGTools). Есть подключаемый модуль, который работает с Thunderbird, но я использую Apple Mail.
пользователь637338
Арран Кудбард-Белл
не2умный