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