15.9. OpenSSL
Пред. | Глава 15. Безопасность | След.

## 15.9. OpenSSL

Написал: Tom Rhodes.

Одной из программ, требующих особого внимания пользователей, является набор программ OpenSSL, включенный в FreeBSD. OpenSSL предоставляет уровень шифрования поверх обычных уровней соединения; следовательно, он может быть использован многими сетевыми приложениями и сервисами.

OpenSSL может использоваться для шифрования соединений почтовых клиентов, транзакций через интернет, например для кредитных карт, и многого другого. Многие порты, такие как `www/apache13-ssl` и `mail/sylpheed-claws` собираются с OpenSSL.

### Примечание:

В большинстве случаев в Коллекции Портов будет сделана попытка построения порта `security/openssl`, если только переменная `WITH_OPENSSL_BASE` не установлена явно в «yes».

Версия OpenSSL, включаемая в FreeBSD, поддерживает сетевые протоколы безопасности Secure Sockets Layer v2/v3 (SSLv2/SSLv3), Transport Layer Security v1 (TLSv1) и может быть использована в качестве основной криптографической библиотеки.

### Примечание:

Хотя OpenSSL поддерживает алгоритм IDEA, по умолчанию он отключен из-за патентных ограничений Соединенных Штатов. Для его использования необходимо ознакомиться с лицензией, и, если ограничения приемлемы, установить в `make.conf` переменную `MAKE_IDEA`.

Наиболее часто OpenSSL используется для создания сертификатов, используемых программными пакетами. Эти сертификаты подтверждают, что данные компании или частного лица верны и не подделаны. Если рассматриваемый сертификат не был проверен одним из нескольких сертификационных центров («Certificate Authorities» - CA), обычно выводится предупреждение. Центр сертификации представляет собой компанию, такую, как VeriSign, которая подписывает сертификаты для подтверждения данных частных лиц или компаний. Эта процедура не бесплатна и не является абсолютно необходимой для использования сертификатов; однако может успокоить некоторых особо осторожных пользователей.

### 15.9.1. Генерирование сертификатов

Для генерирования сертификатов доступна следующая команда:

`#` `openssl req -new -nodes -out req.pem -keyout cert.pem` Generating a 1024 bit RSA private key ................++++++ .......................................++++++ writing new private key to 'cert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:``US`` State or Province Name (full name) [Some-State]:``PA`` Locality Name (eg, city) []:``Pittsburgh`` Organization Name (eg, company) [Internet Widgits Pty Ltd]:``My Company`` Organizational Unit Name (eg, section) []:``Systems Administrator`` Common Name (eg, YOUR name) []:``localhost.example.org`` Email Address []:``trhodes@FreeBSD.org`` Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:``SOME PASSWORD`` An optional company name []:``Another Name``

Ввод после приглашения «Common Name» содержит имя домена. Здесь вводится имя сервера для верификации; помещение в это поле чего-либо кроме этого имени приведет к созданию бесполезного сертификата. Доступны и другие параметры, например срок действия, альтернативные алгоритмы шифрования и т.д. Полный список находится на странице справочного руководства openssl(1).

В текущем каталоге, из которого была вызвана вышеуказанная команда, должны появиться два файла. Файл `req.pem` с запросом на сертификацию может быть послан в центр выдачи сертификатов, который проверит введённые вами подтверждающие данные, подпишет запрос и возвратит сертификат вам. Второй созданный файл будет иметь название `cert.pem` и содержать приватный сертификационный ключ, который необходимо тщательно защищать; если он попадёт в руки посторонних лиц, то может быть использован для имитации лично вас (или вашего сервера).

Когда подпись CA не требуется, может быть создан самоподписанный сертификат. Сначала создайте ключ RSA:

`#` `openssl dsaparam -rand -genkey -out `myRSA.key` 1024`

Теперь создайте ключ CA:

`#` `openssl gendsa -des3 -out `myca.key` `myRSA.key``

Используйте этот ключ при создании сертификата:

`#` `openssl req -new -x509 -days 365 -key `myca.key` -out `new.crt``

В каталоге должно появиться два новых файла: подпись сертификата, `myca.key` и сам сертификат, `new.crt`. Они должны быть помещены в каталог, доступный для чтения только `root`, желательно внутри `/etc`. Права на каталог можно изменить `chmod` с параметрами 0700.

### 15.9.2. Использование сертификатов, пример

Итак, что могут сделать эти файлы? Хорошим применением может стать шифрование соединений для Sendmail MTA. Это сделает ненужным использование простой текстовой аутентификации для тех, кто отправляет почту через локальный MTA.

### Примечание:

Это не лучшее из возможных использований, поскольку некоторые MUA выдадут ошибку, если сертификат не установлен локально. Обратитесь к поставляемой с программой документации за информацией по установке сертификата.

Следующие строки должны быть помещены в локальный файл `.mc`:

dnl SSL Options define(`confCACERT_PATH',`/etc/certs')dnl define(`confCACERT',`/etc/certs/new.crt')dnl define(`confSERVER_CERT',`/etc/certs/new.crt')dnl define(`confSERVER_KEY',`/etc/certs/myca.key')dnl define(`confTLS_SRV_OPTIONS', `V')dnl

Где `/etc/certs/` это каталог для локального хранения сертификата и ключей. После настройки необходимо собрать локальный файл `.cf`. Это легко сделать, набрав `make` `install` в каталоге `/etc/mail`. Затем выполните команду `make` `restart`, которая должна запустить даемон Sendmail.

Если все пройдет нормально, в файле `/var/log/maillog` не появятся сообщения об ошибках и запустится процесс Sendmail.

Для проведения простого теста подключитесь к почтовому серверу программой telnet(1):

`#` `telnet `example.com` 25` Trying 192.0.34.166... Connected to `example.com`. Escape character is '^]'. 220 `example.com` ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) `ehlo `example.com`` 250-example.com Hello example.com [192.0.34.166], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP `quit` 221 2.0.0 `example.com` closing connection Connection closed by foreign host.

Если в выводе появилась строка «STARTTLS», все работает правильно.

Пред. | Наверх | След.
15.8. Kerberos5 | Начало | 15.10. VPN через IPsec

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.