Перейти до змісту

Генерація ключів SSL

Передумови

  • Робоча станція та сервер під керуванням Rocky Linux
  • OpenSSL, інстальований на машині, на якій ви збираєтеся генерувати закритий ключ і CSR, а також на сервері, де ви в кінцевому підсумку встановлюватимете свій ключ і сертифікати
  • Здатність зручно виконувати команди з командного рядка
  • Корисно: знання команд SSL і OpenSSL

Вступ

Майже кожен веб-сайт сьогодні має працювати з сертифікатом SSL/TLS (рівень захищених сокетів). Ця процедура допоможе вам створити закритий ключ для вашого веб-сайту, а потім створити CSR (запит на підписання сертифіката), який ви використовуватимете для придбання сертифіката.

Генерація закритого ключа

Для непосвячених, закриті ключі SSL/TLS можуть мати різні розміри, виміряні в бітах, що визначає, наскільки важко їх зламати.

Станом на 2021 рік рекомендований розмір закритого ключа веб-сайту все ще становить 2048 біт. Ви можете піти вище, але подвоєння розміру ключа з 2048 біт до 4096 біт лише приблизно на 16% безпечніше, займає більше місця для зберігання ключа та спричиняє більші навантаження на ЦП під час обробки ключа.

Це сповільнює продуктивність вашого веб-сайту без значної безпеки. Дотримуйтеся розміру ключа 2048 і завжди стежте за тим, що зараз рекомендовано. Для початку переконайтеся, що на вашій робочій станції та сервері встановлено OpenSSL:

dnf install openssl

Якщо його не встановлено, ваша система встановить його та всі необхідні залежності.

Прикладом домену є "example.com". Пам’ятайте, що вам потрібно буде заздалегідь придбати та зареєструвати домен. Ви можете придбати домени через кілька «Реєстраторів».

Якщо у вас немає власної DNS (системи доменних імен), ви часто можете використовувати тих самих постачальників для хостингу DNS. DNS перетворює ваш названий домен у числа (IP-адреси, IPv4 або IPv6), які може зрозуміти Інтернет. Ці IP-адреси будуть місцем фактичного розміщення веб-сайту.

Згенеруйте ключ за допомогою openssl:

openssl genrsa -des3 -out example.com.key.pass 2048

Зверніть увагу, що ви назвали ключ із розширенням .pass. Це тому, що коли ви запускаєте цю команду, вона вимагає ввести парольну фразу. Введіть спрощену парольну фразу, яку ви можете запам’ятати, оскільки незабаром збираєтеся видалити це:

Enter pass phrase for example.com.key.pass:
Verifying - Enter pass phrase for example.com.key.pass:

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

Можливо, вас навіть не буде поруч, щоб увійти в нього, або, що ще гірше, може не мати доступної консолі. Видаліть його зараз, щоб уникнути всього цього:

openssl rsa -in example.com.key.pass -out example.com.key

Це ще раз запитає цю парольну фразу, щоб видалити її з ключа:

Введіть парольну фразу, наприклад.com.key.pass:

Тепер ваш пароль видалено з ключа після того, як ви ввели парольну фразу втретє, і збережено як example.com.key

Створення CSR

Далі вам потрібно створити CSR (запит на підписання сертифіката), який ви використовуватимете для придбання сертифіката.

Під час генерації CSR виникає запит щодо кількох фрагментів інформації. Це атрибути X.509 сертифіката.

Одним із запитів буде «Загальне ім’я (наприклад, ВАШЕ доменне ім’я)». Це поле має містити повне доменне ім’я сервера, який захищає SSL/TLS. Якщо веб-сайт, який потрібно захистити, буде https://www.example.com, тоді введіть www.example.com у цьому запиті:

openssl req -new -key example.com.key -out example.com.csr

Це відкриває діалогове вікно:

Назва країни (2-літерний код) [XX]: введіть двозначний код країни, у якій знаходиться ваш сайт, наприклад "US"

Назва штату або провінції (повна назва) []: введіть повну офіційну назву свого штату або провінції, наприклад «Nebraska»

Назва населеного пункту (наприклад, місто) [Місто за замовчуванням]: введіть повну назву міста, наприклад «Omaha»

Назва організації (наприклад, компанія) [Company Ltd за замовчуванням]: За бажанням ви можете ввести організацію, частиною якої є цей домен, або просто натиснути ENTER, щоб пропустити.

Назва організаційного підрозділу (наприклад, розділ) []: Це буде опис підрозділу організації, до якого належить ваш домен. Знову ж таки, ви можете просто натиснути ENTER, щоб пропустити.

Загальне ім’я (наприклад, ваше ім’я чи ім’я хосту вашого сервера) []: Тут потрібно ввести ім’я хосту свого сайту, наприклад, «www.example.com»

Адреса електронної пошти []: Це поле необов’язкове, ви можете заповнити його або просто натиснути ENTER, щоб пропустити.

Далі процедура запропонує вам ввести додаткові атрибути. Пропустити їх можна, натиснувши ENTER:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Створення вашого CSR завершено.

Придбання Сертифікату

Кожен постачальник сертифікатів матиме в основному однакову процедуру. Ви купуєте SSL/TLS і термін (1 або 2 роки тощо), а потім надсилаєте свій CSR. Для цього вам потрібно буде використати команду more, а потім скопіювати вміст вашого файлу CSR.

more example.com.csr

Що має показати вам щось на зразок цього:

-----BEGIN CERTIFICATE REQUEST-----
MIICrTCCAZUCAQAwaDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5lYnJhc2thMQ4w
DAYDVQQHDAVPbWFoYTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDEYMBYG
A1UEAwwPd3d3Lm91cndpa2kuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAzwN02erkv9JDhpR8NsJ9eNSm/bLW/jNsZxlxOS3BSOOfQDdUkX0rAt4G
nFyBAHRAyxyRvxag13O1rVdKtxUv96E+v76KaEBtXTIZOEZgV1visZoih6U44xGr
wcrNnotMB5F/T92zYsK2+GG8F1p9zA8UxO5VrKRL7RL3DtcUwJ8GSbuudAnBhueT
nLlPk2LB6g6jCaYbSF7RcK9OL304varo6Uk0zSFprrg/Cze8lxNAxbFzfhOBIsTo
PafcA1E8f6y522L9Vaen21XsHyUuZBpooopNqXsG62dcpLy7sOXeBnta4LbHsTLb
hOmLrK8RummygUB8NKErpXz3RCEn6wIDAQABoAAwDQYJKoZIhvcNAQELBQADggEB
ABMLz/omVg8BbbKYNZRevsSZ80leyV8TXpmP+KaSAWhMcGm/bzx8aVAyqOMLR+rC
V7B68BqOdBtkj9g3u8IerKNRwv00pu2O/LOsOznphFrRQUaarQwAvKQKaNEG/UPL
gArmKdlDilXBcUFaC2WxBWgxXI6tsE40v4y1zJNZSWsCbjZj4Xj41SB7FemB4SAR
RhuaGAOwZnzJBjX60OVzDCZHsfokNobHiAZhRWldVNct0jfFmoRXb4EvWVcbLHnS
E5feDUgu+YQ6ThliTrj2VJRLOAv0Qsum5Yl1uF+FZF9x6/nU/SurUhoSYHQ6Co93
HFOltYOnfvz6tOEP39T/wMo=
-----END CERTIFICATE REQUEST-----

Ви хочете скопіювати все, включно з рядками «BEGIN CERTIFICATE REQUEST» і «END CERTIFICATE REQUEST». Потім вставте їх у поле CSR на веб-сайті, де ви купуєте сертифікат.

Перед видачею сертифіката вам, можливо, доведеться виконати інші кроки перевірки залежно від власності на домен, реєстратора, який ви використовуєте, тощо. Після видачі він міститиме проміжний сертифікат від постачальника, який ви також використовуватимете в конфігурації.

Висновок

Згенерувати всі деталі для придбання сертифіката веб-сайту не складно за допомогою цієї процедури.

Author: Steven Spencer

Contributors: Ezequiel Bruni, Ganna Zhyrnova