Создание SSL сертификата в Linux.


В продолжение линейки статей про SSL, хотелось бы описать шаги появления сертификатов.

Я не буду повторяться в терминологии. Теоретическая часть изложена в статье "Что такое SSL и с чем его кушать"

Дальнейшие действия справедливы в среде Linux c использованием функционала пакета Openssl.

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

openssl genrsa -out server.key 2048

Дальше генерируем файл на запрос сертификата:

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

В процессе генерации запроса вам зададут следующие вопросы. Естественно, большинство из них могут остаться без ответа. Важным является только Common Name - имя Вашего сайта. Если в нем допустить ошибку, то сертификат работать не будет:

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
A challenge password []:
An optional company name []:

К сожалению Common Name принимает только одно значение, то есть Вы можете сгенерировать сертификат только для домена с www или только для домена без www. Как быть? Очень просто. Для начала нужно быть готовым к тому, что сертификат на 2 домена будет стоить дороже, чем на 1. То есть если на вашем сайте используются ссылки с www и без www, тогда придется раскошеливаться, либо переписывать код.

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

Для того что бы сгенерировать запрос сертификата для нескольких доменов нужно отредактировать файл /etc/ssl/openssl.cnf:

Раскомментировать строку:

req_extensions = v3_req

Дальше нужно найти секцию [ v3_req ]. Она будет содержать вот такие строки:

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

Сразу под ними нужно прописать следующую конструкцию

subjectAltName = @alt_names
[alt_names]
DNS.1 = www.%your_website%.com
DNS.2 = www.%your_website%.org
DNS.3 = %your_website%.org

Массив alt_names будет содержать альтернативные имена доменов, которые будут включены в сертификат. Не нужное можно убрать, нужное - добавить.

После этой операции нужно вернуться на 3 шага назад, сгенерировать server.key и CSR.

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

На выходе Вы получите CSR файл (запрос сертификата), который будет содержать все нужные Вам домены.

Прочитать содержимое CSR файла можно следующей командой:

openssl req -in %your_website%.csr -noout -text

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

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

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

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

При работе с SSL сертификатами очень удобно пользоваться страницей Ssl Stuff Check.

Доступны следующие инструменты:

  • Получить сведения о запросе сертификата (декодировать csr файл) - в удобной форме отобразит информацию, которая содержится в запросе сертификата. Рекомендую использовать для проверки CSR файла перед отправкой его в Центр авторизации.
  • Получить сведения о сертификате (декодировать crt файл) - позволяет получить информацию о имеющемся сертификате. Отсеивает лишнюю информацию и отображает нужную в красивой форме. Очень полезно в случае, когда у Вас есть устаревший сертификат клиента и на основе информации нужно создать новый.
  • Проверить подходит ли ключ к сертификату (сравнить хэш файлов) - Удобная штука, особенно когда у Вам присылают набор файлов, среди которых только одна пара сертификат-ключ. Так же можно использовать для проверки совпадают ли сертификат с ключем перед установкой сертификата на Production сервера. Если сертификат был сгенерирован на основе другого ключа - вэб сервер не запустится. Получите downtime сайта.

И в конце концов, создать самоподписаный сертификат можно вот так:

openssl x509 -req -extensions v3_req -days 365 -in %your_website%.csr -signkey server.key -out %your_website%.crt

Share Button
(Visited 3 682 times, 1 visits today)

Один комментарий на «“Создание SSL сертификата в Linux.”»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *