В сучасному цифровому світі, де передача конфіденційної інформації через мережу стала необхідністю, важливо вживати заходи для забезпечення безпеки даних. Один із ключових інструментів для цього є SSL (Secure Sockets Layer) протокол шифрування.
Розгянемо процес встановлення SSL від Lens Encript.
Навіщо потрібен SSL?
SSL використовується для шифрування даних, які передаються між користувачем та сервером. Це забезпечує захист від перехоплення та недозволеного доступу до конфіденційної інформації, такої як особисті дані, логіни, паролі та банківські реквізити.
Як працює SSL
SSL використовує симетричне та асиметричне шифрування для захисту даних. Клієнт і сервер взаємодіють у процесі "handshake", де вони обмінюються ключами та підтверджують свою ідентичність.
Встановлення SSL cертифікату
Для використання SSL, необхідно отримати цифровий сертифікат від надійного постачальника, який підтвердить вашу ідентичність. Сертифікат встановлюється на сервері та включає публічний ключ, який використовується для шифрування даних.
Розглянемо безкоштованого сертифікату від Lens Encript за допомогою
Cerbot для Web-server Nginx
sudo snap install --classic certbot
sudo certbot certonly --nginx
sudo snap install --classic certbot
sudo certbot certonly --nginx
Після встановлення потрібно вказати для якої доменної адреси потрібно встановити SSL сертифікат. По замовчуванню сертифікати знаходяться в каталозі:
/etc/letsencrypt/live/example.com/fullchan.pem
/etc/letsencrypt/live/example.com/fullchan.pem
По замовчуванню ключ знаходиться в каталозі:
/etc/letsencrypt/live/example.com/privekey.pem
/etc/letsencrypt/live/example.com/privekey.pem
certbot certificates
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: example.com
Serial Number: ****************************
Key Type: ECDSA
Domains: example.com
Expiry Date: 2024-04-19 10:36:03+00:00 (VALID: 82 days)
Certificate Path: /etc/letsencrypt/live/example/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: example.com
Serial Number: ****************************
Key Type: ECDSA
Domains: example.com
Expiry Date: 2024-04-19 10:36:03+00:00 (VALID: 82 days)
Certificate Path: /etc/letsencrypt/live/example/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
виведе інформацію про статус сертифіката та на який період він буде дійсний, як правило це на пів року, після чого потрібно його оновляти, щоб незабути про оновлення даного сертифікату можна запустити автооновлення командою:
sudo certbot renew --dry-run
sudo certbot renew --dry-run
sudo потрібно для того щоб виконати від адміністратора
Налаштування Nginx конфігурації
Під час встановлення сертифікату можна вибрати автоматичне налаштування Nginx конфіугарції, та вручну самостійно.
Рекомендуюу звісно самому налаштовувати
Потрібно відредагувати файл або створити новий з новими налаштуваннями який знаходиться за шляхом: /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.example.com;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.example.com;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Після внесення змін в nginx конфігурацію потірбно перевірити чи немає помилок в конфігруації
Та наступним кроком перезапустити службу NGINX
тепер ваш веб сторінка буде працювати по адресі https://example.com