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