Найти в Дзене
linux.feature

SSL cертификат доменного имени.

Путаетесь в терминологии ? Не понимаете откуда они берутся сертификаты и что такое закрытый ключ ? Давайте разбираться. Для шифрации трафика между сайтом в сети Интернет и браузером пользователя используется пара открытый и закрытый ключ. Это деление достаточно условное, с той лишь разницей, что открытый знают все, а закрытый только сервер сайта. С математической точки зрения они равнозначны. Открытый ключ это и есть сертификат сайта, чтобы с ним можно было установить шифрованное соединение, а закрытый ключ ещё называют - приватным и он известен только серверу сайта. Создать такую пару можно в любой Linux консоли с помощью утилиты openssl. openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /tmp/example.com.key -out /tmp/example.com.crt -subj /C=/ST=/L=/O=/CN=example.com После выполнения будет создана пара ключей по алгоритму RSA на срок один год. Где example.com.key и example.com.crt - закрытый ключ и сертификат соответственно. Если его установить на сайт, то любой браузер бу

Путаетесь в терминологии ? Не понимаете откуда они берутся сертификаты и что такое закрытый ключ ? Давайте разбираться.

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

Открытый ключ это и есть сертификат сайта, чтобы с ним можно было установить шифрованное соединение, а закрытый ключ ещё называют - приватным и он известен только серверу сайта.

Создать такую пару можно в любой Linux консоли с помощью утилиты openssl.

openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /tmp/example.com.key -out /tmp/example.com.crt -subj /C=/ST=/L=/O=/CN=example.com

После выполнения будет создана пара ключей по алгоритму RSA на срок один год. Где example.com.key и example.com.crt - закрытый ключ и сертификат соответственно. Если его установить на сайт, то любой браузер будет сообщать, что данный сертификат - самоподписанный и к нему нет доверия. Но для тестовых целей и собственных сервисов в сети этого достаточно, так как трафик уже зашифрован так же как и при наличии подписи доверенной третьей стороны. Которые в свою очередь называются центрами сертификации.

Для того чтобы создать полноценный сертификат, его нужно подписать каким-либо центром сертификации. А для этого необходимо создать - запрос на сертификат.

openssl genrsa -out /tmp/example.com.key 2048
openssl req -new -key /tmp/example.com.key -subj /CN=example.com -out /tmp/example.com.csr

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

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

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

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

SSLCertificateFile /etc/pki/tls/certs/example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/example.com.key
SSLCertificateChainFile /etc/pki/tls/certs/example.com-chain.crt

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

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

CN= *.example.com

Такие сертификаты называют wildcard и они значительно дороже в центрах сертификации, чем обычные на один домен.