Оглавление

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

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

Процедура

Конфигурация 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 содержащий и сертификаты и ключи.

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


-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDutWy+o/XZ/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx
-----END CERTIFICATE-----
Что у нас теперь есть в директории /usr/local/certs/:

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

Просмотр информации о сертификате

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

Оглавление