Локальна 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.key1openssl: запуск інструмента 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.csr1Після запуску цієї команди 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 []:admin@servbay.demo # 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.crt1openssl 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. Бажаємо продуктивної локальної розробки!
