Перевод сборника команд Unix ToolBox. Часть 7 SSL сертификаты

481

Продолжаю публикацию разделов перевода сборника команд Unix ToolBox. Сегодня предлагаю вам пополнить свою копилку знаний относительно SSL сертификатов. Это очень важная часть жизни любого интернет-пользователя. Особенно, если вы проводите через всемирную сеть какие-либо финансовые или конфиденциальные информационные транзакции.

Более того, веб-страницы очень часто запрашивают у вас конфиденциальную информацию, и для ее передачи нужно определить, находитесь ли вы на защищенном сайте или нет. В свете растущего количества интернет-мошенничеств возможность опознать защищенное соединение очень важна.
особенно при передаче логинов и паролей. Проблема решается, если зашифровать данную информацию для передачи. Именно для такой защиты и существует SSL.

Это как сайдинг в строительстве. Когда нужна защита постройки от внешнего воздействия. Причем как термического так и климатического. Но вернемся от аналогий непосредственно к SSL сертификатам.

SSL сертификаты

Жмите на Далее >>>

SSLSecure Socket Layer, криптографический протокол, использующий шифрование открытым ключем, для защиты передаваемых по сети данных. SSL сертификат — электронный документ, используемый для подтверждения принадлежности транзакции тому или иному серверу и установления защищенного соединения между клиентом и сервером с шифрованием трафика. Часто используется на защищенных Веб серверах (https) или Mail серверах (imaps)

Процедура создания SSL сертификата

  • Клиент должен создать сертификат, со всеми неоходимыми данными.
  • Отправить запрос на сертификацию в один из «центров сертификации» ( далее ЦС ). Так-же на данном этапе, беднт создан прватный ключ на локальной машине.
  • После обработки запроса, сертификат подписывается секретным ключем ЦС. Клиент имея публичный ключ ЦС, проверяет подлинность сертификата и далее может использовать его.
  • Если необходимо, можно объединить сертификат и ключ в один файл.

Конфигурация OpenSSL

В данном примере мы будем использовать директорию /usr/local/certs. Проверьте и отредактируйте файл /etc/ssl/openssl.cnf, согласно вашей конфигурации.
Вот часть конфигурационного файла openssl.cnf, имеющая отношение к делу:

[ CA_default ]
dir = /usr/local/certs/CA # Где все хранить
certs = $dir/certs # Где хранить сертификаты
crl_dir = $dir/crl # Где хранить списки отзыва сертификатов (CRL)
database = $dir/index.txt # Индексный файл базы данных

Убедитесь что директории существуют, иначе создайте их.

# mkdir -p /usr/local/certs/CA
# cd /usr/local/certs/CA
# mkdir certs crl newcerts private
# echo «01» > serial # Только если нет порядкового номера
# touch index.txt

Если вы собираетесь получать подписанный сертификат от какого-либо ЦС, вам нужно отправить запрос на сертификацию (CSR). После обработки запроса, сертификат будет подписан на определенный срок (например 1 год).

Создать сертификат полномочий

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

# openssl req -new -x509 -days 730 -config /etc/ssl/openssl.cnf -keyout CA/private/cakey.pem -out CA/cacert.pem
Запрос сертификации (CSR)

Если ваше приложение не поддерживает шифрование (например UW-IMAP), отключите его (шифрование), с помощью опции -nodes.

# openssl req -new -keyout newkey.pem -out newreq.pem \
-config /etc/ssl/openssl.cnf
# openssl req -nodes -new -keyout newkey.pem -out newreq.pem \
-config /etc/ssl/openssl.cnf # Без шифрования ключа

Сохраните созданный запрос (newreq.pem), он может быть отправлен снова, для следующего обновления, подпись ограничивает срок действия сертификата. Кроме того, в процессе, будет создан приватный ключ newkey.pem.

Подпись сертификата

Подписанный ЦС сертификат является действующим.
ниже, замените «servername» на имя своего сервера

# cat newreq.pem newkey.pem > new.pem
# openssl ca -policy policy_anything -out servernamecert.pem -config /etc/ssl/openssl.cnf -infiles new.pem
# mv newkey.pem servernamekey.pem

Ткперь servernamekey.pem — содержит приватный ключ а servernamecert.pem — сертификат сервера.

Создание объединенного сертификата

IMAP сервер желает иметь все приватные ключи и серверные сертификаты в одном файле, сделать это не сложно, но файл должен храниться в очень безопасном месте.
Создадим файл servername.pem содержащий и сертификаты и ключи.

  • Открыть файл servernamekey.pem в текстовом редакторе и скопировать приватный ключ в файл servername.pem.
  • Тоже самое нужно проделать с сертификатом servernamecert.pem.

Окончательный вариант файла servername.pem, будет выглядеть примерно так:

——BEGIN RSA PRIVATE KEY——
MIICXQIBAAKBgQDutWy+o/XZ/[…]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ
——END RSA PRIVATE KEY——
——BEGIN CERTIFICATE——
MIIERzCCA7CgAwIBAgIBBDANB[…]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx
——END CERTIFICATE——

Что у нас теперь есть в директории /usr/local/certs/:

  • CA/private/cakey.pem (CA приватный ключ)
  • CA/cacert.pem (CA публичный ключ)
  • certs/servernamekey.pem (приватный ключ сервера)
  • certs/servernamecert.pem (подписанный сертификат сервера)
  • certs/servername.pem (сертификат сервера и приватный ключ)

Приватный ключ в безопасном месте!

Просмотр информации о сертификате
# openssl x509 -text -in servernamecert.pem # Посмотр информации о сертификате
# openssl req -noout -text -in server.csr # Информация запроса
# openssl s_client -connect cb.vu:443 # Проверить сертификат Веб сервера