Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
FreeBSD
man
EXIM
  4.62
  4.70
  часть 1
  часть 2
  часть 3
  часть 4
  часть 5
  часть 6
  часть 7
  часть 8
  часть 9
  часть 10
  часть 11
  часть 12
  часть 13
  часть 14
  часть 15
  часть 16
  часть 17
  часть 18
  часть 19
  часть 20
  часть 21
  часть 22
  часть 23
  часть 24
  часть 25
  часть 26
  часть 27
  часть 28
  часть 29
  часть 30
  часть 31
  часть 32
  часть 33
  часть 34
  часть 35
  часть 36
  часть 37
  часть 38
  часть 39
  часть 40
  часть 41
  часть 42
  часть 43
  часть 44
  часть 45
  часть 46
  часть 47
  часть 48
  часть 49
  часть 50
  часть 51
  часть 52
  часть 53
  часть 54
  часть 55
  filter facility


www.lissyara.su —> документация —> EXIM —> 4.70 —> часть 39

39. Шифрование соединений с использованием TLS/SSL


    Поддержка для TLS (Transport Layer Security), прежде известной как SSL (Secure Sockets Layer), осуществлена с использованием библиотеки OpenSSL или библиотеки GnuTLS (exim требует GnuTLS, релиза 1.0 или более позднего). В дистрибутиве exim'a нет никакого кода для непосредственного осуществления TLS. Для его использования, вы должны инсталлировать OpenSSL или GnuTLS, и, затем, собрать версию exim'a в которую включена поддержка TLS (смотрите раздел 4.7). Также, вы должны понимать базовые концепции шифрования на организационном уровне, и, в частности, способы использования публичных ключей, частных ключей, и сертификатов.
   RFC3207 задаёт, как SMTP-соединения могут использовать шифрование. Как только установлено подключение, клиент даёт команду STARTTLS. Если сервер её принимает, клиент и сервер договариваются о механизме шифрования. Если договорённость успешна, данные, впоследствии передаваемые между ними, - зашифрованы.
   ACL exim'a позволяют детектировать, зашифрован текущий сеанс, или нет, и, таким образом, какой метод шифрования используется, предоставил ли клиент сертификат, и был ли сертификат проверен. Это позволяет серверу exim принимать или отклонять определённые команды основанные на состоянии шифрования.
   Warning: Определённые типы файрволлов и определённые типы антивирусных продуктов могут прерывать  TLS-соединения. Вам необходимо выключить SMTP-сканирование для этих продуктов, чтобы TLS заработало.

39.1 Поддержка для наследственного ssmtp (или smtps) протокола

   Ранние воплощения шифрованного SMTP использовали иной порт TCP, вместо обычного, и ожидали, что переговоры о шифровании начнутся немедленно, вместо ожидания команды клиента STARTTLS, использующего стандартный SMTP-порт. Протокол назывался ssmtp или smtps, и для этой цели был выделен 465 порт.
   Этот подход был оставлен, когда было стандартизовано шифрованное SMTP, но, всё ещё есть клиенты, использующие его по наследству. Exim поддерживает этих клиентов путём глобальной опции
tls_on_connect_ports. Её значение должно быть списком номеров портов; обычное использование - таково:
tls_on_connect_ports = 465

   Номер порта, определяемый этой опцией, применяется ко всем SMTP-соединениям, и через демона, и через inetd. Вам всё ещё необходимо задавать все порты используемые демоном (путём установки daemon_smtp_ports или local_interfaces или опции командной строки -oX), поскольку tls_on_connect_ports не добавляет дополнительного порта, скорее, она определяет иное поведение на порту определённом в другом месте.
   Также, есть опция командной строки
-tls-on-connect. Она переопределяет tls_on_connect_ports; она вызывает наследование поведения для всех портов.

39.2 OpenSSL против GnuTLS

   Первая поддержка TLS в exim`e была осуществлена с использованием OpenSSL. Поддержка GnuTLS последовала позднее, когда была выпущена первая версия GnuTLS. Для сборки exim'a с использованием GnuTLS, вам необходимо установить
USE_GNUTLS=yes

в Local/Makefile, в дополнение к
SUPPORT_TLS=yes

   Также, вы должны установить TLS_LIBS и TLS_INCLUDE соответственно, так, чтобы были найдены файлы заголовков и библиотеки для GnuTLS.
   Есть некоторые отличия при использовании GnuTLS вместо OpenSSL:

  • Опция tls_verify_certificates должна содержать имя файла, а не имя директории (для OpenSSL - это может быть любым).
  • Опция tls_dhparam - игнорируется, поскольку ранние версии GnuTLS не имели средств для изменения параметров Diffie-Hellman. Я понимаю, что это изменилось, но exim не был обновлён для предоставления этого средства.
  • Строка выдающегося имени (DN) сообщаемая библиотекой OpenSSL использует слэш для разделения полей; GnuTLS использует использует запятые, в соответствии с RFC2253. Это вызываeтся значением переменной $tls_peerdn.
  • OpenSSL идентифицирует шифр используя дефисы, как разделители, например: DES-CBC3-SHA. GnuTLS использует подчёркивания, например: RSA_ARCFOUR_SHA. Что хуже - OpenSSL жалуется на присутствие символов подчёркивания в списке шифров. Чтобы упростить жизнь, exim заменяет подчёркивания на дефисы для OpenSSL, и дефисы на подчёркивания для GnuTLS при обработке списков шифров в опциях tls_require_ciphers (глобальная опция и транспортная опция smtp).
  • Опции tls_require_ciphers работают иначе, как описано в разделе 39.4 и 39.5.

    39.3 Вычисление параметра GnuTLS

       GnuTLS использует параметры D-H, которые требуют для вычисления существенного времени. Неблагоразумно вычислять их заново для каждой сессии TLS. Поэтому, exim сохраняет эти данные в файле, в своей директории спула, называемой gnutls-params. Файл принадлежит пользователю exim'a и читаем лишь его владельцем. Каждый процесс exim'a, который запускает GnuTLS читает параметры D-H из этого файла. Если файл не существует, первый процесс exim'a, которому он нужен, вычисляет данные и записывает их во временный файл, переименовываемый по завершении. Не имеет значения, если несколько процессов exim'a делают это одновременно (кроме траты некоторых ресурсов). Как только файл помещён на место, новый процессы exim'a немедленно начинают его использовать.
       Для максимальной безопастности, параметры, которые сохраняются в этом файле, периодически, должны быть повторно вычислены, частота зависит от уровня вашей параноидальности. Упорядочивание этого - принципиально просто; просто удалите файл, когда вы хотите вычислить новое значение. Однако, могут быть проблемы. Для вычисления новых параметров необходимы случайные числа, и они берутся из
    /dev/random. Если система не очень активна, /dev/random может задержать возврат данных, пока не будет доступно достаточно хаоса. Это может вызывать зависание exim'a на довольно существенное время, вызывая таймауты для входящих соединений.
       Решение - генерировать параметры снаружи exim'a. Они сохраняются в
    gnutls-params в формате PEM, что означает, что они могут быть сгенерированы внешне, используя команду certtool, которая является частью GnuTLS.
       Для замены параметров новыми, вместо удаления файла и разрешения exim`y пересоздать его, вы можете генерировать новые параметры используя
    certtool, и, после завершения, заменить файл кэша exim'a путём переименования. Уместные команды - что то типа этого:
    # rm -f new-params
    # touch new-params
    # chown exim:exim new-params
    # chmod 0400 new-params
    # certtool --generate-privkey --bits 512 >new-params
    # echo "" >>new-params
    # certtool --generate-dh-params --bits 1024 >> new-params
    # mv new-params gnutls-params
    

       Если exim никогда не генерирует параметры самостоятельно, возможность остановки - удалена (наверное, имеется ввиду задержка при генерации - прим. lissyara).

    39.4 Требование специфических шифров в OpenSSL

       В библиотеке OpenSSL есть функция, которая может передавать список наборов шифров до того, как имеет место переговор о шифре. Этим определяется, какие шифры доступны. Список - разделён двоеточиями, и может содержать имена типа DES-CBC3-SHA. Exim передаёт раскрытое значение tls_require_ciphers напрямую этому вызову функции. Следующее цитирование документации OpenSSL определяет, какие формы элементов допустимы в строке шифра:

  • Он может состоять из одного шифра, типа RC4-SHA.
  • Он может представлять список шифров содержащих определённый алгоритм, или шифры определённого типа. Например, SHA1 представляет все шифры используя алгоритм SHA1 и SSLv3 представляет все алгоримы SSL v3.
  • Списки наборов шифров могут быть объединены в одну строку шифра, используя символ +. Это используется как логическая операция и. Например, SHA1+DES представляет все наборы шифров содержащие алгоритмы SHA1 и DES.
       Каждой строке шифра, произвольно, может предшествовать один из символов
    ! или - или +.
  • Если используется ! - шифр удаляется из списка. Удалённые шифры не могут вновь появляться в списке, даже если они явно заявлены.
  • Если используется -, шифр удаляется из списка, но некоторые, или все шифры могут быть добавлены последующими позднее опциями.
  • Если используется +, шифр перемещается в конец списка. Эта опция не добавляет новых шифров; она лишь перемещает существующие.
       Если не присутствует ни один из этих символов, строка интерпретируется как список шифров, который будет добавлен к текущему привелигированному списку. Если список включает какие-то шифры, которые уже пристутсвуют, они будут проигнорированы: т.е. они не будут перемещены в конец списка.

    39.5 Специфические шифры или другие параметры требующиеся в GnuTLS

       Библиотека GnuTLS позволяет вызывающему определить список разрешённых методов обмена ключами, главный шифрующий алгоритм, алгоритмы MAC и протоколы. К несчастью, эти списки цифровые, и библиотека не имеет функций для преобразования имён в номера. Поэтому, список распознаваемых имён вкомпилирован в приложение. Разрешённые методы обмена ключами, шифры, и алгоритмы MAC могут использоваться в любой комбинации с формой шифрования. Это - отличие от OpenSSL, где полное имя шифрования передаётся её управляющей функции.
       Для совместимости с OpenSSL, опция
    tls_require_ciphers может быть установлена в полное имя шифра, такое как RSA_ARCFOUR_SHA, но для GnuTLS эта опция контролирует только алгоритм шифрования. Exim ищет каждый элемент в списке для имени доступного алгорима. Например, если список содержит RSA_AES_SHA, тогда распознаётся AES, и поведение точно такое же как если задан просто AES.
       Есть дополнительные опции с именами
    gnutls_require_kx, gnutls_require_mac, и gnutls_require_protocols которые могут использоваться для ограничения методов обмена ключами, алгоритсов MAC, и протоколов, соответственно. При использовании OpenSSL эти опции игнорируются.
       Все четыре опции доступны как глобальные опции, контролирующие как exim ведёт себя в роли сервера, и, также, как опции транспорта
    smtp - контролирующие как exim ведёт себя в роли клиента. Все значения - раскрываемые. После раскрытия, значение может быть списком разделённым двоеточием, разделитель может быть изменён обычным способом.
       Каждый из четырёх списков начинается с дефолтового набора алгоритмов. Если первый элемент в списке не начинается с восклицательного знака, все дефолтовые элементы удаляются. В этом случае, может использоваться только то, что точно задано. Если первый элемент в списке начинается с восклицательного знака, значения по умолчанию помещаются слева списка.
       Тогда, любой элемент, начинающийся с восклицательного знака, вызывает удаление релевантных алгоритмов из списка, и любой элемент, не начинающийся с восклицательного знака, вызывает добавление релевантных алгоритмов в список. Нераспознанные элементы списка - игнорируются. Таким образом,
    tls_require_ciphers = !ARCFOUR
    

    разрешают все дефолтовые значения, исключая ARCFOUR, тогда как
    tls_require_ciphers = AES : 3DES
    

    разрешает лишь шифрование использующее AES и 3DES.
       Для
    tls_require_ciphers распознаваемые имена - AES_256, AES_128, AES (оба из предшествовавших), 3DES, ARCFOUR_128, ARCFOUR_40 и ARCFOUR (оба из предшествовавших). Список по умолчанию не содержит их всех; в нём находятся AES_256, AES_128, 3DES, и ARCFOUR_128.
       Для
    gnutls_require_kx распознаваемые имена DHE_RSA, RSA (который включает DHE_RSA), DHE_DSS, и DHE (который включает оба DHE_RSA и DHE_DSS). Список по умолчанию содержит RSA, DHE_DSS, DHE_RSA.
       Для
    gnutls_require_mac распознаваемые имена SHA (синоним SHA1), и MD5. Список по умолчанию содержит SHA, MD5.
       Для
    gnutls_require_protocols распознаваемые имена TLS1 и SSL3. Список по умолчанию содержит TLS1 и SSL3.
       В сервере, порядок списка не имеет значения. Сервер будет извещать о доступности всех допустимых методов шифрования. Однако, в клиенте, порядок в списке
    tls_require_ciphers определяет предпочтительный порядок алгоритмов шифрования. Первым пробуется первый из клиентского списка, о котором, также, извещал сервер. Порядок значений по умолчанию - перечислен выше.

    39.6 Конфигурирование сервера exim для использования TLS

       Когда exim собран с поддержкой TLS, он извещает клиентские хосты, совпадающие с tls_advertise_hosts о доступности команды STARTTLS, но не какие-либо другие хосты. Значение по умолчанию этой опции - не задано, что означает, что о STARTTLS никто не извещается. Такое значение по умолчанию выбрано, поскольку вы должны привести в порядок некоторые другие опции, чтобы сделать доступным TLS, и, также, это разумно для систем, которые хотят использовать TLS лишь в роли клиента.
       Если клиент выдаёт команду STARTTLS, и на сервере существует какая-то конфигурационная проблема, команда отклоняется с ошибкой 454. Если клиент упорствует в попытках подавать команды SMTP, все они, кроме QUIT, отклоняются с ошибкой:
    554 Security failure
    

       Если команда STARTTLS подаётся в пределах существующей TLS-сессии, она отклоняется с кодом ошибки 554.
       Для включения операций TLS на сервере, вы должны установить опцию
    tls_advertise_hosts в соответствие каким-то хостам. Вы можете, разумеется, установить её в * - для соответствия всем хостам. Однако, это не всё, что вы должны сделать. TLS-сессии на сервере не будут работать без некоторого дальнейшего конфигурирования в конце сервера.
       По слухам известно, что все существующие клиенты, которые поддерживают TLS/SSL, используют шифрование RSA. Чтобы это работало, вам необходимо установить в сервере:
    tls_certificate =/some/file/name
    tls_privatekey =/some/file/name
    

       Фактически, эти опции - раскрываемые строки,таким образом, вы можете сделать их зависимыми от подключенного клиента, если захотите. Первый файл содержит серверный сертификат X509, и, второй, содержит частный ключ, который с ним идёт. Эти файлы должны быть читаемы пользователем exim'a, и, всегда должны быть даны с полным путём. Это может быть один и тот же файл, если в нём содержатся сертификат и ключ. Если опция tls_privatekey не задана, или если раскрытие принудительно неудачно, или результат - пустая строка, предполагается такой случай. Файл сертификата также может содержать промежутчный сертификаты, которые необходимы для отсылки клиенту, с целью аутентифицировать сертификаты сервера.
       Если вы непонимаете о ключах и сертификатах, пожалуйста, попробуйте найти источник этой вводной информации, которая не является специфической для exim'a. (Есть несколько комментариев ниже, в разделе 39.11.)
       Отметьте: Эти опции не применяются когда exim работает как клиент - они применяются лишь в случае сервера. Если вам необходимо использовать сертификат в exim`e в роли клиента, вы должны установить опции с теми же самыми названиями в транспорте
    smtp.
       Только с этими опциями, сервер exim'a способен использовать TLS. Этим не требуется, чтобы клиент обладал сертификатом (но, смотрите ниже, как настоять на этом). Существует одна иная опция, которая бывает необходима в других ситуациях. Если опция
    tls_dhparam = /some/file/name
    

    установлена, библиотека SSL инициализируется для использования шифрования Diffie-Hellman, с параметрами, содержащимися в файле. Это увеличивает набор методов шифрования, поддерживаемых сервером. Смотрите команду
    openssl dhparam
    

    для способа генерации этих данных. В настоящее время, tls_dhparam используется лишь когда exim слинкован с OpenSSL. При использовании GnuTLS, она игнорируется.
       Строки, предоставляемые для этих трёх опций, раскрываются при каждом подключении клиентского хоста. Поэтому возможно использовать различные сертификаты и ключи для разных хостов, если вы этого желаете, для управления раскрытием, путём использования клиентского IP-адреса в переменной
    $sender_host_address. Если строка раскрытия принудительно неудачна, exim ведёт себя так, будто эта опция неустановлена.
       В переменную
    $tls_cipher устанавливается метод шифрования, о котором договорились для входящего соединения TLS. Это включается в заголовок Received: входящего сообщения (по умолчанию - разумеется, вы можете это изменить), и, также, включается в в строку лога прибывающего сообщения, с ключом X=, если не выключен лог селектор tls_cipher. Условие encrypted может использоваться для тестирования специфического шифрования в ACL. (Для исходящих доставок SMTP переменная $tls_cipher сброшена - смотрите раздел 39.9)
       Как только соединение TLS установлено, ACL которые запускаются для последующих команд SMTP могут проверить имя метода шифрования и изменить свои действия соответствующим образом. Имена методов шифрования изменяемые, зависят от используемой библиотеки TLS. Например, OpenSSL использует имя DES-CBC3-SHA для шифрования, известного в других контекстах как TLS_RSA_WITH_3DES_EDE_CBC_SHA. Для дополнительных деталей проверьте документацию OpenSSL.

    39.7 Запрос и проверка клиентских сертификатов

       Если вы хотите, чтобы сервер exim'a запросил сертификат при переговорах о TLS-сессии с клиентом, вы должны установить или tls_verify или tls_try_verify_hosts. Разумеется, вы можете установить любой из них в *, для применения ко всем соединениям TLS. Для любого хоста, который совпадает с этими опциями, exim запрашивет сертификат как часть установки сессии TLS. Содержимое сертификата проверяется путём его сравнения со списком ожидаемых сертификатов. Они должны быть доступны в файле, или, только для OpenSSL (не для GnuTLS), каталоге, идентифицируемом путём  tls_verify_certificates.
       Файл может содержать много сертфикатов, связанных конец к концу. Если используется директория (только для OpenSSL), каждый сертификат должен быть в отдельном файле, с именем (или символической ссылкой) формы
    <hash>.0, где <hash> - значение хэша созданное из сертификата. Вы можете вычислить релевантный кэш путём запуска команды
    openssl x509 -hash -noout -in /cert/file
    

    где /cert/file - содержит один сертификат.
       Различие между
    tls_verify_hosts и tls_try_verify_hosts - в том, что происходит если клиент не предоставляет сертификат, или если сертификат не совпадает ни с одним из сертификатов в коллекции из tls_verify_certificates. Если клиент совпадает с tls_verify_hosts, попытка установить TLS-сессию прерывается, и входящее соединение обрыватся. Если клиент совпадает с tls_try_verify_hosts, продолжается (шифрованная) SMTP-сессия. ACL`ы, запускаемые для последующих команд SMTP, могут детектировать факт, что сертификат не был проверен, и соотвтественно изменить свои действия. Например, вы можете настаивать на сертификате до принятия сообщения для релея, но не когда сообщения предназначено для локальной доставки.
       Когда клиент предоставляет сертификат, (проверенный, или нет), значение DN сертификата становится доступным в переменной
    $tls_peerdn в процессе последующей обработки сообщения.
       Поскольку часто это - длинная текстовая строка, по умолчанию она не включается в строку лога или заголовок
    Received:. Вы можете принять меры для её логгирования, установив ключ DN=,в лог селекторе tls_peerdn, и вы можете использовать received_header_text - для изменения заголовка Received:. Когда сертификат не предоставлен, переменная $tls_peerdn пуста.

    39.8 Отменённые сертификаты

       Издатели сертификатов выпускают Списки Аннулированных Сертификатов (Certificate Revocation Lists - CRLs), когда сертификаты отменяются. Если у вас есть такой список, вы можете передать его серверу exim'a используя глобальную опцию tls_crl, и клиенту exim'a, используя опцию с идентичным названием для транспорта smtp. В каждом случае, значение опции раскрывается, и должно быть именем файла содержащего CRL в формате PEM.

    39.9 Конфигурирование клиента exim'a для использования TLS

       Лог селекторы tls_ciphe и tls_peerdn применяются к исходящим SMTP-доставкам также, как и ко входящим, последние вызывают логгирование серверных DN сертификатов. Оставшаяся клиентская конфигурация для TLS - вся в транспорте smtp.
       Нет необходимости устанавливать какие-либо опции для работы TLS в транспорте
    smtp. Если exim собран с поддержкой TLS, и сервер оповестил о поддержке TLS, транспорт smtp.всегда пробует запустить TLS-сессию. Однако, это может быть предотвращено установкой hosts_avoid_tls (транспортная опция) в список серверных хостов, с которыми не используется TLS.
       Если вы не хотите чтобы exim пытался отправить сообщения незашифрованными, когда попытка установки шифрованного соединения была неудачной, вы можете установить опцию
    hosts_require_tls в список хостов, для которых шифрования является обязательным. Для этих хостов, доставка всегда задерживается, если не может быть установлено шифрованное соединение. Если для адреса есть другие хосты, они пробуются обычным способом.
       Когда хост сервера не находится в
    hosts_require_tls, exim может попробовать доставить сообщение незашифрованным. Он всегда так делает, если ответ на STARTTLS - код 5xx. Для временного кода ошибки, или для ошибки переговоров о сессии TLS после успешного кода ответа, происходящее контролируется путём опции tls_tempfail_tryclear транспорта smtp. Если она ложна, доставка к хосту задерживается, и пробуются другие хосты (если доступны). Если она истинна, exim пытается доставить нешифрованное сообщение после 4xx ответа на STARTTLS, и, если STARTTLS принимается, но последующие переговоры о TLS неудачны, exim закрывает текущее соединение (поскольку оно в неизвестном состоянии), открывает новое к тому же самому хосту, и, затем, пытается доставить сообщение нешифрованным.
       Опции
    tls_certificate и tls_privatekey транспорта smtp предоставляют клиенту сертификат, который он передаёт на сервер, если тот его запрашивает. Если сервер - exim, то он будет просить сертификат лишь если клиент совпадает с опцией tls_verify_hosts или tls_try_verify_hosts.
       Если для транспорта
    smtp установлена опция tls_require_ciphers, она должна быть именем файла, или, только для OpenSSL (не для GnuTLS), директорией, которая содержаит коллекцию ожидаемых серверных сертификатов. Клиент проверяет сертификат сервера со своей коллекцией, принимая во внимание любые отозванные сертификаты, которые находятся в списке, заданном опцией tls_crl.
       Если для транспорта
    smtp установлена опция tls_require_ciphers, она должна содержать список разрешённых методов шифрования. Если любая из этих проверок неудачна, доставка к текущему хосту прекращается, и транспорт smtp пробует доставить на альтернативный хост, если он есть.
       Отметьте: Эти опции должны быть заданы в транспорте
    smtp exim'a для использования TLS, когда он работает как клиент. Exim не предполагает, что серверный сертификат (установленный путём глобальной опции с тем же самым именем) также должен использоваться при работе в роли клиента.
       Все опции TLS, в транспорте
    smtp, раскрываются до использования, с $host и $host_address содержащими имя и адрес сервера, на который подключился клиент. Принудительная ошибка раскрытия заставляет exim вести себя так, как будто соответствующая опция незадана.
       До установления SMTP соединения, переменные
    $tls_cipher и $tls_peerdn - пусты. (В процессе первого соединения, оно содержат значения которые которые установлены при приёме сообщения) Если, в последствии, STARTTLS проходит успешно, эти переменные устанавливаются в соответствующие значения для исходящего соединения.

    39.10 Несколько сообщений через одно шифрованное TCP/IP соединение

       Exim посылает много сообщений по одному TCP/IP соединению путём запуска нового процесса для каждого сообщения, передавая сокет от одного процесса следующему. Эта реализация не очень хорошо для работы с TLS, поскольку есть много информации о состоянии, ассоциированной с соединением TLS, а не только идентификатор сокета. Передача всей информации о состоянии другому процессу - невыполнима. Следовательно, exim завершает существующую сессию TLS до передачи сокета новому процессу. Новый процесс может попробовать запустить сеанс TLS, и, в случае успеха, может попробовать заново аутентифицироваться, если используется AUTH, до посылки следующего сообщения.
       Из RFC неясно, действительно или нет, SMTP сессия продолжается в чистом виде после закрытия TLS, или же TLS может быть перезапущен позже, как было описано. Однако, если сервер - exim, эта остановка и реинициализация - работает. Неизвестно, каким (или обоими) образом себя ведут другие сервера, если клиент закрывает сеанс TLS, и продолжает с нешифрованным SMTP, но, разумеется, есть те, которые не работают. Для таких серверов, exim не должен передавать сокет другому процессу, поскольку неудача последующей попытки его использования заставила бы exim записать в логи временную ошибку хоста, и задержать иные доставки на этот хост.
       Для тестирования этого случая, exim посылает команду EHLO на сервер после закрытия TLS сессии. Если она удачна, то соединение закрывается вместо пеердачи новому новому процессу доставки, но информация о повторе не записывается.
       Также есть ручная отмена; вы можете установить опцию
    hosts_nopass_tls транспорта smtp в совпадение с этими хостами, для которых exim не должен передавать соединение новому процессу, если используется TLS.

    39.11 Сертификаты и всё такое

       Для полного понимания работы TLS, вам необходимо знать о сертификатах, подписании сертификатов, и авторизаторах сертификатов. Это - не место для обучения (имеется ввиду - этот документ - прим. lissyara), тем более, что я не очень много знаю об этом. Некоторое полезное введение может быть найдено в FAQ дополнения SSL к Apache, в настоящее время:
    http://www.modssl.org/docs/2.7/ssl_faq.html#ToC24
       Другие части документации по
    modssl - также полезны, и имеют ссылки на дальнейшие файлы. Книга Eric`a Rescorla`a - SSL and TLS, опубликованная Addison-Wesley (ISBN 0-201-61598-3), содержит введение и дополнительные всесторонние описания. Некотрые типовые программы, взятые из книги, доступны  по адресу:
    http: // www.rtfm.com/openssl-examples/

    39.12 Цепочки сертификатов

       Файл указанный в tls_certificate может содержать более одного сертификата. Это полезно в случае, когда посылаемый сертификат проверяется промежуточным сертификатом, которого не имеет другая сторона. Несколько сертификатов должны быть в правильном порядке в файле. Вначале, хост сертифицирует сам себя, затем, следующий сертификат для проверки выданного хостом, затем следующее - для проверки предыдущего, и так далее, до (опционально) - корневого сертификата. Корневой сертификат уже должен быть доверенным у получателя, для успешной проверки, разумеется, если он заранее не установлен, посылка корневого сертификата вместе с остальными делает его доступным пользователю для установки, если конечный получатель - пользовательский MUA, который может взаимодействовать с пользователем.

    39.13 Самоподписанные сертификаты

       Вы можете создать самоподписанный сертификат, используя команду req, предоставляемую OpenSSL, например так:
    openssl req -x509 -newkey rsa:1024 -keyout file1 -out file2 \
                -days 9999 -nodes
    

       file1 и file2 могут быть одним и тем же файлом; ключ и сертификат разграничены, и могут быть идентифицированы независимо. Опция -days период, в течение которого сертификат действителен. Опция -nodes - важна: если вы её не зададите, ключ шифруется с запрашиваемой у вас парольной фразой, и любое использование ключа вызывает запрос парольной фразы. Это бесполезно, если вы собираетесь использовать ключ в MTA, где запрос невозможен.
       Самоподписанный сертификат, сделанный таким образом, вполне достаточен для тестирования, и может быть адекватен для всех ваших требований, если вы, главным образом, интересуетесь шифрованием передачи, а не секурной идентификацией.
       Однако, многие клиенты требуют чтобы предоставленный сервером сертификат был пользовательским (также назваемый
    leaf or site) сертификатом, и не самоподписанным сертификатом. В этой ситуации, самоподписанный сертификат, должен быть установлен на клиентском хосте как доверенный корневой авторитативный сертификат (CA), и сертификат используемымй exim`ом, должен быть пользовательским сертификатом, подписанным с этим самоподписанным сертификатом.
       Для информации о создании самоподписанных сертификатов и использовании их для подписания пользовательских сертификатов, смотрите часть
    General implementation overview книги Open-source PKI, доступной в онлайне http://ospkibook.sourceforge.net/.


    =============
    translated by lissyara
    verifying by Gerk



    Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.



  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    2011-11-20, BlackCat
    Разъём на WiFi-карту

    Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
    2011-09-14, manefesto
    Настройка git+gitosis

    Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
    2011-08-14, zentarim
    Wi-FI роутер + DHCP + DNS

    Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
    2011-06-15, -ZG-
    Охранная система на FreeBSD+LPT

    В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
    2011-03-13, terminus
    ng_nat

    Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
    2011-02-20, Капитан
    Nagios+Digitemp

    Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
    2011-02-17, Le1
    Zyxel Configuration

    Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
    2011-02-16, fox
    hast carp zfs ucarp cluster

    HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
    2011-02-04, BlackCat
    Восстановление ZFS

    История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
    2011-02-03, Капитан
    1-Wire

    Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
    2011-01-28, Капитан
    Температура в серверной

    Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
    2011-01-21, m4rkell
    Syslog server

    Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
    2011-01-07, lissyara
    Canon/gphotofs

    Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
    2010-12-13, Al
    IPSec

    Описание принципов работы IPSEC и способов аутентификации.
    2010-12-07, manefesto
    FreeBSD on flash

    Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
    2010-12-05, Fomalhaut
    root ZFS, GPT

    Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
    2010-09-05, Cancer
    Настройка аудиоплеера на ximp3

    Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
    2010-08-31, Cancer
    Установка и настройка OpenVPN

    На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
    2010-08-25, manefesto
    freebsd lvm

    Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
    2010-04-30, gonzo111
    proftpd file auth&quota

    Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
    2010-04-22, lissyara
    tw_cli

    Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
    2010-04-14, fox
    MySQL Master+Master

    MySQL (Master Master) and (Master Slave) Как настроить репликацию…
    2010-03-09, terminus
    DNS zones

    Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
    2010-03-09, aspera
    Squid+AD (group access)

    Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
    2010-03-02, BlackCat
    Шлюз: Часть 4

    Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
    2010-03-01, BlackCat
    Шлюз: Часть 3

    Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
    2010-03-01, BlackCat
    Шлюз: Часть 2

    Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
    2010-03-01, BlackCat
    Шлюз: Часть 1

    Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
    2010-02-23, Morty
    darkstat

    Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
    2010-01-23, gonzo111
    squid+sams+sqstat

    Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
    2009-12-19, schizoid
    mpd5 + radius + ng_car + Abills

    Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
    2009-11-16, lissyara
    UFS->ZFS

    Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
    2009-11-13, gx_ua
    fusefs-ntfs

    Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
    2009-11-12, Morty
    LiveCD

    Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
    2009-09-27, lissyara
    Samba как PDC

    Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
    2009-08-30, terminus
    ipfw nat

    Подробное руководство по ipfw nat, сложные случаи конфигурации.
    2009-08-24, levantuev
    HotSpot

    Установка Hotspot системы в общественное заведение.
    2009-08-18, lissyara
    diskless

    Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 20 чел.
    За последние 30 мин было: 74 человек
    За сегодня было
    1548 показов,
    427 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0399 секунд
    Из них PHP: 37%; SQL: 63%; Число SQL-запросов: 56 шт.
    Исходный размер: 176640; Сжатая: 32538