Локальна HTTPS-розробка із самопідписаним SSL сертифікатом
Під час локальної розробки та тестування веб-додатків надзвичайно важливо імітувати роботу у production-середовищі з HTTPS-з'єднанням. Хоча самопідписані SSL сертифікати не довіряються загальнодоступними сертифікаційними центрами (CA), вони є простим способом реалізувати HTTPS у локальному середовищі розробника. У цій статті детально описано, як за допомогою вбудованого в ServBay інструмента OpenSSL створити сучасний і безпечний самопідписаний SSL сертифікат на основі еліптичних кривих (ECC) і як підключити його на вашому локальному сайті в ServBay. Для демонстрації використовується домен servbay.demo
.
Розуміння налаштування HTTPS дозволяє повноцінно протестувати роботу сайту за захищеним з'єднанням у локальному середовищі, наприклад, відпрацювання змішаного контенту, безпечних налаштувань cookie тощо.
Огляд
Самопідписаний сертифікат — це SSL-сертифікат, який ви створюєте і підписуєте самостійно, без участі довіреного CA. Вони ідеально підходять для сценаріїв, де не потрібна публічна довіра, таких як:
- Локальні середовища розробки
- Внутрішні тестові сервери
- Внутрішні застосунки для некритичних даних
ServBay має інтегрований інструмент OpenSSL, що дозволяє безпосередньо у терміналі створювати сертифікати.
Попередні умови
- Встановлений та запущений ServBay.
- Базові навички роботи з командним рядком.
Крок 1: Генерація самопідписаного ECC SSL сертифіката
Рекомендуємо використовувати ECC-сертифікати, оскільки вони надають таку ж безпеку, як і традиційні RSA, але при цьому мають менший розмір ключа, вищу швидкість підпису/перевірки та менше навантаження на ресурси.
Ось докладна інструкція з генерування самопідписаного ECC SSL сертифіката:
Генерація ECC приватного ключа (Private Key)
Відкрийте термінал і виконайте цю команду для створення ECC приватного ключа
servbay.demo.key
з використанням кривоїprime256v1
:shopenssl ecparam -genkey -name prime256v1 -out servbay.demo.key
1openssl
: запуск інструмента OpenSSL.ecparam
: обробка параметрів еліптичної кривої.-genkey
: створити ключ.-name prime256v1
: вказати назву кривої ECC,prime256v1
(NIST P-256) — один із найпоширеніших і безпечних варіантів.-out servbay.demo.key
: ім'я файлу для збереження приватного ключа.
Створення CSR (запит на підпис сертифіката)
З приватного ключа
servbay.demo.key
, який був створений на попередньому кроці, згенеруйте CSR-файлservbay.demo.csr
. CSR містить інформацію про майбутній сертифікат (наприклад, домен, назва організації) і підписується приватним ключем.shopenssl req -new -key servbay.demo.key -out servbay.demo.csr
1Після запуску цієї команди OpenSSL запропонує ввести дані для CSR. Обов'язково правильно заповнити поле
Common Name (e.g. server FQDN or YOUR name)
— вкажіть домен вашого локального сайту (servbay.demo
). Інші поля — на ваш розсуд або згідно з прикладом.Нижче наведено приклад такого введення:
Country Name (2 letter code) [AU]:CN # Дволітерний код країни, наприклад CN (Китай) State or Province Name (full name) [Some-State]:Hong Kong # Область або штат Locality Name (eg, city) []:Kowloon # Місто Organization Name (eg, company) [Internet Widgits Pty Ltd]:ServBay # Назва організації Organizational Unit Name (eg, section) []:Development # Підрозділ Common Name (e.g. server FQDN or YOUR name) []:servbay.demo # **Важливо: ваш локальний домен** Email Address []:[email protected] # Email для зв'язку Please enter the following 'extra' attributes to be sent on in your certificate request A challenge password []: # Необов'язково, залиште порожнім An optional company name []: # Необов'язково, залиште порожнім
1
2
3
4
5
6
7
8
9
10
11Генерація самопідписаного сертифіката
Нарешті згенеруйте самопідписаний SSL-сертифікат
servbay.demo.crt
, використовуючи CSR (servbay.demo.csr
) та приватний ключ (servbay.demo.key
). Термін дії сертифіката — 365 днів.shopenssl x509 -req -days 365 -in servbay.demo.csr -signkey servbay.demo.key -out servbay.demo.crt
1openssl x509
: робота із сертифікатами X.509.-req
: вхідний параметр — CSR.-days 365
: дійсний 365 днів.-in servbay.demo.csr
: шлях до CSR-файлу.-signkey servbay.demo.key
: підписання цим приватним ключем (адже це самопідписаний сертифікат).-out servbay.demo.crt
: ім'я вихідного файлу сертифіката.
Після виконання команд ви отримаєте три файли у поточному каталозі:
servbay.demo.key
(приватний ключ),servbay.demo.csr
(запит на підпис), іservbay.demo.crt
(сертифікат).
(Ілюстрація: процес створення сертифіката у терміналі через OpenSSL)
Крок 2: Налаштування самопідписаного SSL сертифіката у ServBay
Після створення сертифіката, перемістіть його у місце, доступне для ServBay, та вкажіть це у налаштуваннях сайту. Рекомендується зберігати SSL сертифікати у каталозі /Applications/ServBay/ssl
, створивши підкаталоги для кожного домену.
Переміщення сертифікатів у потрібний каталог
Відповідно до рекомендованої структури ServBay, перемістіть створені файли у
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/
. Якщо каталог не існує — створіть його.sh# Якщо каталогу немає, створіть його mkdir -p /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # Переміщення файлів mv servbay.demo.key /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ mv servbay.demo.crt /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # CSR зазвичай непотрібний, але для резерву можна також зберегти mv servbay.demo.csr /Applications/ServBay/ssl/private/tls-certs/servbay.demo/
1
2
3
4
5
6
7
8/Applications/ServBay/ssl/
: базова директорія для SSL-файлів у ServBay.private/tls-certs/
: рекомендований підкаталог для приватних TLS/SSL сертифікатів.servbay.demo/
: окремий підкаталог для кожного домену — зручно при роботі з багатьма сайтами.
Відкрийте панель управління ServBay
Запустіть додаток ServBay і перейдіть у панель адміністратора.
Додайте або відредагуйте конфігурацію сайта
У панелі адміністрування перейдіть до вкладки Сайти (Websites). Якщо сайт для
servbay.demo
ще не створений — натисніть Додати сайт (Add Website). Якщо створений — оберіть і натисніть "редагувати".Увімкнення SSL/HTTPS
Знайдіть секцію налаштувань SSL/HTTPS чи подібну.
Вкажіть тип сертифіката як Custom
Серед параметрів виберіть Custom (Власний сертифікат).
Вкажіть шляхи до сертифікатів
Відповідним чином введіть шляхи до файлів, щойно переміщених у каталог SSL ServBay:
- Certificate Key File (файл приватного ключа):
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.key
- Certificate File (сертифікат):
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.crt
- Certificate Key File (файл приватного ключа):
Вкажіть домен
Переконайтеся, що у полі Domain (Домен) вказаний
servbay.demo
.Збережіть і застосуйте налаштування
Збережіть зміни в конфігурації сайта. Після цього ServBay запросить підтвердження застосування змін (зазвичай це перезапуск веб-сервера — наприклад, Caddy або Nginx). Погодьтеся на застосування змін.
(Ілюстрація: налаштування шляху до власного SSL-сертифіката у панелі керування ServBay)
Перевірка HTTPS-налаштування
Після налаштувань, перейдіть у браузері за адресою https://servbay.demo/
для перевірки працездатності.
Оскільки використовується самопідписаний сертифікат, не підписаний довіреним CA, браузер покаже попередження про небезпеку (сертифікат не довіряється або ризик для приватності). Це очікувана поведінка.
(Ілюстрація: попередження браузера при відкритті сайту із самопідписаним сертифікатом)
Можна проігнорувати це попередження (зазвичай є опція "Додатково" або "Продовжити") або ж уникнути його, додавши ваш сертифікат до довіреного сховища операційної системи.
(Ілюстрація: перегляд інформації про самопідписаний сертифікат у браузері)
У розділі з деталями сертифіката можна пересвідчитися, що браузер дійсно використовує сертифікат servbay.demo
, який ви створили.
Примітки
- Безпека приватного ключа: Файл приватного ключа (
.key
) — критично важливий, зберігайте його у безпеці й не розголошуйте. Встановіть права доступу тільки для користувача, який запускає ServBay. - Шляхи до файлів: У налаштуваннях ServBay впевніться, що шляхи до сертифікатів вказані правильно та повністю.
- Збіг домену: Поле Common Name (CN), вказане при генеруванні сертифіката, має точно співпадати з доменом сайту у налаштуваннях ServBay, інакше браузер повідомить про невідповідність сертифіката домену.
- Термін дії сертифіката: Переконайтеся, що визначений термін дії вас влаштовує (
-days
у команді OpenSSL). По завершенні терміну потрібно перевипустити сертифікат.
Альтернативи та додаткові функції
Хоча самопідписані сертифікати підходять для базового локального тестування HTTPS, ServBay пропонує й більш зручні варіанти для імітації реального середовища зі справжньою довірою CA:
- ServBay User CA: Вбудований у ServBay інструмент створення власного CA. Ви можете додати ServBay User CA до довірених на операційній системі та випускати для локальних сайтів довірені сертифікати. Завдяки цьому у вашому браузері не буде попереджень про небезпеку, дуже корисно при тестуванні OAuth, Webhooks чи інтеграційних сценаріїв.
- ServBay Public CA: Дозволяє видавати сертифікати для локальних доменів через public CA та автоматично налаштовувати системну довіру.
Ці опції особливо зручні при роботі з кількома локальними сайтами. Більше інформації ви знайдете у документації ServBay.
Поширені запитання (FAQ)
- Питання: Я згенерував сертифікат, але браузер все одно показує що з'єднання не захищене?
- Відповідь: Самопідписані сертифікати не довіряються загальнодоступними CA, тому браузер показує попередження. Щоб його позбутися, додайте сертифікат (чи свій CA, якщо використовуєте ServBay User CA) у список довірених на вашій ОС.
- Питання: Чи можу я використовувати RSA-сертифікат?
- Відповідь: Так, OpenSSL підтримує створення RSA-сертифікатів. Використайте, наприклад, команду
openssl genrsa -out servbay.demo.key 2048
для генерації RSA-ключа і далі слідуйте інструкції. Однак ми радимо ECC-сертифікати для кращої продуктивності.
- Відповідь: Так, OpenSSL підтримує створення RSA-сертифікатів. Використайте, наприклад, команду
- Питання: Як додати самопідписаний сертифікат до довірених у macOS?
- Відповідь: Відкрийте програму «Ключі» (Keychain Access), оберіть сховище "System" чи "Login". Перетягніть
.crt
файл у програму, двічі клікніть по ньому, розгорніть поле «Довіра» (Trust) і у полі «Secure Socket Layer (SSL)» виберіть «Always Trust». Збережіть зміни (можливо, буде потрібен пароль). Перезапустіть браузер.
- Відповідь: Відкрийте програму «Ключі» (Keychain Access), оберіть сховище "System" чи "Login". Перетягніть
Підсумок
Тепер ви знаєте, як за допомогою інтегрованого OpenSSL у ServBay створити самопідписаний ECC SSL сертифікат і налаштувати його для локального сайту. Самопідписані сертифікати — чудовий спосіб зрозуміти принципи роботи HTTPS і безпечно тестувати локальні розробки. Але для зручнішого управління довірою та для ще ближчої імітації бою рекомендуємо ознайомитися також із функціями User CA і Public CA у ServBay. Бажаємо продуктивної локальної розробки!