Налаштування SSL сертифіката в Nginx з Wiki.js

pic

Якщо ви шукаєте спосіб налаштувати SSL сертифікат для вашого Wiki.js за допомогою Nginx на сервері Ubuntu, цей посібник саме для вас. Ми пройдемо весь процес крок за кроком, використовуючи вигаданий домен wiki.exemplo.com.br як приклад.

Попередні вимоги

Перед тим як почати, переконайтеся, що у вас є:

  • Ubuntu Server 22.04
  • Встановлений Nginx
  • Встановлений і працюючий Wiki.js
  • Ваші файли сертифіката SSL (ca.crt, priv.key і pub.crt)

Налаштування сертифікатів

Перший крок — організувати ваші SSL сертифікати в безпечному місці. Виконайте наступні команди:

sudo mkdir -p /etc/nginx/ssl/wiki.exemplo.com.br  
sudo cp ca.crt priv.key pub.crt /etc/nginx/ssl/wiki.exemplo.com.br/  
sudo chmod 600 /etc/nginx/ssl/wiki.exemplo.com.br/*

Налаштування Nginx

pic

Тепер давайте створимо конфігурацію для Nginx. Створіть новий файл:

sudo nano /etc/nginx/sites-available/wiki.exemplo.com.br

Додайте наступну конфігурацію:

server {  
 listen 80;  
 server_name wiki.exemplo.com.br;  
 return 301 https://$server_name$request_uri;  
}  

server {  
 listen 443 ssl http2;  
 server_name wiki.exemplo.com.br;  

 # Налаштування SSL  
 ssl_certificate /etc/nginx/ssl/wiki.exemplo.com.br/pub.crt;  
 ssl_certificate_key /etc/nginx/ssl/wiki.exemplo.com.br/priv.key;  
 ssl_trusted_certificate /etc/nginx/ssl/wiki.exemplo.com.br/ca.crt;  

 # Налаштування безпеки  
 ssl_protocols TLSv1.2 TLSv1.3;  
 ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;  
 ssl_prefer_server_ciphers off;  
 ssl_session_cache shared:SSL:10m;  
 ssl_session_timeout 1d;  

 # Налаштування проксі  
 location / {  
 proxy_pass http://127.0.0.1:3000;  
 proxy_set_header Host $host;  
 proxy_set_header X-Real-IP $remote_addr;  
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
 proxy_set_header X-Forwarded-Proto $scheme;  

 # Підтримка WebSocket  
 proxy_http_version 1.1;  
 proxy_set_header Upgrade $http_upgrade;  
 proxy_set_header Connection "upgrade";  
 }  
}

Активація конфігурації

Щоб активувати конфігурацію, створіть символічне посилання:

sudo ln -s /etc/nginx/sites-available/wiki.exemplo.com.br /etc/nginx/sites-enabled/

Перевірте, чи конфігурація правильна:

sudo nginx -t

Якщо все в порядку, перезапустіть Nginx:

sudo systemctl restart nginx

Перевірка дозволів

Якщо ви отримали помилку 403 Forbidden, перевірте дозволи директорії Wiki.js:

ls -la /var/www/wikijs

При необхідності змініть дозволи:

sudo chown -R wikijs:wikijs /var/www/wikijs  
sudo chmod -R 755 /var/www/wikijs

Керування сервісом Wiki.js

Щоб перевірити статус Wiki.js:

sudo systemctl status wikijs

Щоб запустити сервіс:

sudo systemctl start wikijs  
sudo systemctl enable wikijs # Для автоматичного запуску

Моніторинг і логи

Щоб моніторити логи у разі проблем:

Логи Nginx:

sudo tail -f /var/log/nginx/error.log  
sudo tail -f /var/log/nginx/access.log

Логи Wiki.js:

sudo journalctl -u wikijs -f

Поради з безпеки

  1. Дозволи на файли: Підтримуйте обмеження дозволів на сертифікати (600)
  2. Безпечні протоколи: Використовуйте лише TLSv1.2 і TLSv1.3
  3. Оновлення: Тримайте Nginx і Wiki.js в актуальному стані
  4. Firewall: Налаштуйте, щоб дозволити лише порти 80 і 443
    5.
    Резервні копії: Робіть регулярні резервні копії сертифікатів і налаштувань

Поширені проблеми та рішення

Помилка сертифіката

Перевірте, чи правильні шляхи до файлів сертифікатів у конфігурації Nginx.

Помилка 403 Forbidden

Перевірте дозволи на директорії та файли Wiki.js.

Помилка 502 Bad Gateway

Переконайтеся, що Wiki.js працює на порту 3000 і доступний локально.

Відмова в з’єднанні

Перевірте налаштування фаєрволу та чи відкриті необхідні порти.

Висновок

З цими налаштуваннями ваш Wiki.js працюватиме безпечно з SSL через Nginx. Не забувайте тримати ваші сертифікати актуальними і регулярно робити резервні копії налаштувань.

Корисні ресурси

Перекладено з: Configurando Certificado SSL no Nginx com Wiki.js

Leave a Reply

Your email address will not be published. Required fields are marked *