🎀 Как включить TLS 1.3 в Apache и Nginx — Information Security Squad
🎀 Как включить TLS 1.3 в Apache и Nginx

TLS 1.3 является последней версией протокола безопасности транспортного уровня (TLS) и основан на существующих спецификациях 1.2 с надлежащим стандартом IETF: RFC 8446.

Он обеспечивает более высокий уровень безопасности и повышает производительность по сравнению со своими предшественниками.

В этой статье мы покажем вам пошаговое руководство по получению действительного сертификата TLS и включению протокола последней версии TLS 1.3 в вашем домене, размещенном на веб-серверах Apache или Nginx.

Требования:

  • Apache версии 2.4.37 или выше.
  • Nginx версии 1.13.0 или выше.
  • OpenSSL версии 1.1.1 или выше.
  • Допустимое доменное имя с правильно настроенными DNS-записями.
  • Действительный сертификат TLS.

Установите сертификат TLS от Let’s Encrypt

Чтобы получить бесплатный SSL-сертификат от Let Encrypt, вам необходимо установить клиент Acme.sh, а также несколько необходимых пакетов в системе Linux, как показано на ниже:

# apt install -y socat git  [На Debian/Ubuntu]
# dnf install -y socat git  [На RHEL/CentOS/Fedora]
# mkdir /etc/letsencrypt
# git clone https://github.com/Neilpang/acme.sh.git
# cd acme.sh 
# ./acme.sh --install --home /etc/letsencrypt --accountemail your_email@example.com
# cd ~
# /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

ПРИМЕЧАНИЕ. Замените example.com в приведенной выше команде своим реальным доменным именем.

После того, как вы установили SSL-сертификат, вы можете перейти к включению TLS 1.3 в своем домене, как описано ниже.

Включить TLS 1.3 на Nginx

Как я уже упоминал в приведенных выше требованиях, этот TLS 1.3 поддерживается начиная с версии Nginx 1.13.

Если вы используете старую версию Nginx, вам необходимо сначала обновить ее до последней версии.

# apt install nginx
# yum install nginx

Проверьте версию Nginx и версию OpenSSL, для которой был скомпилирован Nginx (убедитесь, что версия nginx по крайней мере 1.14 и версия openssl 1.1.1).

# nginx -V

Пример вывода:

nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 
built with OpenSSL 1.1.1 FIPS  11 Sep 2018
TLS SNI support enabled
....

Теперь запустите, включите и проверьте установку nginx.

# systemctl start nginx.service
# systemctl enable nginx.service
# systemctl status nginx.service

Теперь откройте файл конфигурации /etc/nginx/conf.d/example.com.conf для nginx vhost с помощью вашего любимого редактора.

# vi /etc/nginx/conf.d/example.com.conf

и найдите директиву ssl_protocols и добавьте TLSv1.3 в конце строки, как показано ниже:

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;
}

Наконец, проверьте конфигурацию и перезагрузите Nginx.

# nginx -t
# systemctl reload nginx.service

Включить TLS 1.3 в Apache

Начиная с Apache 2.4.37, вы можете воспользоваться TLS 1.3.

Если вы используете старую версию Apache, вам необходимо сначала обновить его до последней версии.

# apt install apache2
# yum install httpd

После установки вы можете проверить версию Apache и OpenSSL, для которой был скомпилирован Apache.

# httpd -V
# openssl version

Теперь запустите, включите и проверьте установку nginx.

-------------- На Debian/Ubuntu -------------- 
# systemctl start apache2.service
# systemctl enable apache2.service
# systemctl status apache2.service

-------------- На RHEL/CentOS/Fedora --------------
# systemctl start httpd.service
# systemctl enable httpd.service
# systemctl status httpd.service

Теперь откройте файл конфигурации виртуального хоста Apache, используя ваш любимый редактор.

# vi /etc/httpd/conf.d/vhost.conf
или
# vi /etc/apache2/apache2.conf

и найдите директиву ssl_protocols и добавьте TLSv1.3 в конце строки, как показано ниже.

<VirtualHost *:443>
SSLEngine On

# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

ssl_protocols TLSv1.2 TLSv1.3
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

     ServerAdmin admin@example.com
     ServerName www.example.com
     ServerAlias example.com
    #DocumentRoot /data/httpd/htdocs/example.com/
    DocumentRoot /data/httpd/htdocs/example_hueman/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/log/httpd/example.com/httpserror.log
  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>

Наконец, проверьте конфигурацию и перезагрузите Apache.

-------------- На Debian/Ubuntu -------------- 
# apache2 -t
# systemctl reload apache2.service

-------------- На RHEL/CentOS/Fedora --------------
# httpd -t
# systemctl reload httpd.service

Убедитесь, что сайт использует TLS 1.3

После настройки веб-сервера вы можете проверить, что ваш сайт выполняет рукопожатие по протоколу TLS 1.3, используя инструменты разработки браузера Chrome в версии Chrome 70+.

На этом все.

Вы успешно включили протокол TLS 1.3 в своем домене, размещенном на веб-серверах Apache или Nginx.

Если у вас есть какие-либо вопросы по поводу этой статьи, не стесняйтесь задавать их в разделе комментариев ниже.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40