Поиск по сайту:

Как включить TLS 1.3 в Apache и Nginx


TLS 1.3 — это последняя версия протокола Transport Layer Security (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’s Encrypt, вам необходимо установить клиент Acme.sh, а также несколько необходимых пакетов в системе Linux, как показано.


apt install -y socat git  [On Debian/Ubuntu]
dnf install -y socat git  [On 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 [email 
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

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


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.


-------------- On Debian/Ubuntu -------------- 
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service

-------------- On RHEL/CentOS/Fedora --------------
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service

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


vi /etc/httpd/conf.d/vhost.conf
OR
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 [email 
     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.


-------------- On Debian/Ubuntu -------------- 
apache2 -t
systemctl reload apache2.service

-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service

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

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

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