Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Защита

5. Сертификаты

Одной из наиболее распространённых видов криптографии на сегодняшний день является криптосистема с открытым ключом. Криптографическая система с открытым ключом использует открытый ключ и секретный ключ. Система шифрует информацию с помощью открытого ключа. Такая информация может быть дешифрована только с помощью секретного ключа.

Обычное применение криптосистемы с открытым ключом — шифрование трафика приложений с помощью соединений через Secure Socket Layer (SSL) или Transport Layer Security (TLS). Например, конфигурирование

Apache для поддержки HTTPS (протокола HTTP через SSL). Это обеспечивает возможность шифровать трафик, используя протокол, который сам по себе не обеспечивает шифрования.

Сертификат является методом, используемым для распространения публичного ключа и другой информации о сервере и организации, которая за него отвечает. Сертификаты могут иметь цифровую подпись от

центра сертификации (CA). Центр сертификации является доверенным третьим лицом, которое подтверждает, что информация, содержащаяся в сертификате, является точной.

5.1. Типы сертификатов

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

Удостоверяющий центр проверяет ваш запрос и присылает вам сертификат для вашего сервера. В качестве альтернативы вы можете создать свой собственный самоподписанный сертификат.

Учтите, что самоподписанные сертификаты не должны использоваться в большинстве серьёзных производственных систем.

Продолжая пример с HTTPS, подписанный CA сертификат имеет две важных особенности, которых сампоподписанный сертификат не имеет:

Браузеры (обычно) автоматически определяют сертификаты и разрешают безопасные соединения без подтверждения пользователя.

Выданный CA подписанный сертификат является гарантией подлинности организации, предоставляющей веб-страницы браузеру.

194

Защита

Большинство веб-браузеров и компьютеров, которые поддерживают SSL, имеют список центров сертификации, чьи сертификаты они принимают автоматически. Если браузер сталкивается с сертификатом, чей центр сертификации отсутствует в списке, то браузер просит пользователя принять или отклонить это соединение. Также, различные

приложения могут генерировать сообщение об ошибке при использовании самоподписанных сертификатов.

Процесс получения сертификата от CA довольно прост. Краткие сведения об этом:

1.Создайте пару ключей шифрования, открытый и закрытый.

2.Создайте запрос сертификата, основанный на открытом ключе. Данный запрос содержит в себе информацию о вашем сервере и компании, где он размещается.

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

Если вы определились с CA, вам необходимо следовать инструкциям, которые он предоставит для получения его сертификата.

4.Когда CA установит, что вы являетесь тем, за кого себя выдаёте, он пришлёт вам цифровой сертификат.

5.Установите этот сертификат на ваш защищённый сервер и настройте соответствующие приложения на использование сертификата.

5.2. Генерация запроса на подпись сертификата

(Certificate Signing Request, или CSR)

Получаете ли вы сертификат от CA или генерируете его собственноручно, первым шагом должно быть создание ключа.

Если сертификат будет использоваться системными сервисами, такими как Apache, Postfix, Dovecot и т.п., уместно создать ключ без пароля. Отсутствие пароля позволяет сервису запускаться без вмешательства пользователя, обычно это предпочтительный вариант запуска сервиса.

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

Запуск вашего защищённого сервиса без пароля удобен потому, что вам не потребуется вводить пароль при каждом запуске данного

195

Защита

сервиса. Однако это небезопасно и компрометация ключа будет означать и компрометацию сервера.

Для генерации ключей запроса подписи сертификата (CSR) запустите следующую команду из строки терминала:

openssl genrsa -des3 -out server.key 2048

Generating RSA private key, 2048 bit long modulus

..........................++++++

.......++++++

e is 65537 (0x10001)

Enter pass phrase for server.key:

Теперь вы можете ввести свою парольную фразу. Для наилучшей безопасности она должна содержать не менее восьми символов. Минимальная длина — четыре символа. Пароль должен содержать цифры и/или специальные символы и не являться словом из словаря. Запомните то, что вы введёте.

Для подтверждения наберите парольную фразу ещё раз. Как только вы наберете её правильно, ключ к серверу будет создан и сохранён в файле

server.key.

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

openssl rsa -in server.key -out server.key.insecure mv server.key server.key.secure

mv server.key.insecure server.key

Небезопасный ключ теперь называется server.key, и вы можете использовать его для создания CSR без кодовой фразы.

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

openssl req -new -key server.key -out server.csr

У вас будет запрошена парольная фраза (при использовании ключа с паролем - прим. пер.). Если пароль введён правильно, у вас запросят название компании, имя сайта, адрес электронной почты и пр. Как только вы введёте все эти подробности, будет создан запрос CSR и сохранен в

файл server.csr.

Теперь вы можете отправить этот CSR-файл в CA для обработки. CA, используя этот CSR-файл, выпустит сертификат. С другой стороны, вы

196

Защита

можете создать самоподписанный сертификат сами, используя тот же CSRфайл.

5.3. Создание сертификата со своей подписью

Для того, чтобы создать самоподписанный сертификат, исполните следующую команду в терминале:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Вышеприведённая команда предложит ввести парольную фразу. При вводе правильной парольной фразы ваш сертификат будет создан и сохранён в

файле server.crt.

Если ваш защищённый сервер будет использоваться в производственной среде, вам, скорее всего, необходим сертификат, подписанный CA. В данном случае не рекомендуется использовать самоподписанный сертификат.

5.4. Установка сертификата

Вы можете установить ключевой файл server.key и файл сертификата server.crt, или файл сертификата, выданный вам CA, запустив следующую команду в строке терминала:

sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private

Теперь просто сконфигурируйте любые приложения, имеющие поддержку криптографии с открытым ключом, для использования файлов сертификата и ключа. Например, Apache может использовать HTTPS, Dovecot — IMAPS и POP3S и т.д.

5.5. Центр Сертификации

Если для ваших сетевых сервисов требуется много самоподписанных сертификатов, стоит затратить дополнительные усилия и установить свой собственный центр сертификации (CA). Использование сертификатов, подписанных вашим собственным CA, позволяет различным использующим сертификаты сервисам проще доверять другим сервисам, использующим сертификаты от этого же CA.

1.Сначала создайте каталоги для хранения сертификата CA и связанных с ним файлов:

197

Защита

sudo mkdir /etc/ssl/CA

sudo mkdir /etc/ssl/newcerts

2.Для работы CA требует несколько дополнительных файлов: один содержит запись о последнем серийном номере, выданном CA (каждый сертификат должен иметь уникальный серийный номер), другой файл предназначен для записи, какие сертификаты были выданы:

sudo sh -c "echo '01' > /etc/ssl/CA/serial" sudo touch /etc/ssl/CA/index.txt

3.Третьим файлом является файл конфигурации CA. Хотя он не обязателен, тем не менее, он обеспечивает удобство при выдаче нескольких сертификатов. Отредактируйте /etc/ssl/openssl.cnf и в

[ CA_default ] измените:

dir = /etc/ssl/ # Где все сохраняется

database = $dir/CA/index.txt # база данных файла index. certificate = $dir/certs/cacert.pem # CA сертификат serial = $dir/CA/serial # Верный серийный номер private_key = $dir/private/cakey.pem# Частный ключ

4.Затем создайте самоподписанный корневой сертификат:

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Затем вас попросят ввести описание сертификата.

5.Теперь установите корневой сертификат и ключ:

sudo mv cakey.pem /etc/ssl/private/ sudo mv cacert.pem /etc/ssl/certs/

6.Теперь вы готовы к подписыванию сертификатов. Первое, что вам необходимо, это запрос на подпись сертификата (CSR), подробнее смотрите Раздел 5.2, «Генерация запроса на подпись сертификата

(Certificate Signing Request, или CSR)» [195]. Как только у вас будет

CSR, можно перейти к получению сертификата, подписанного центром сертификации:

sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf

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

7.Теперь у вас должен появиться новый файл /etc/ssl/newcerts/01.pem, с таким же содержанием, что и в предыдущем выводе. Выделите и

198

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]