Вступление
TLS 1.3 - это версия протокола безопасности транспортного уровня (TLS), который был опубликован в 2018 году в качестве предлагаемого стандарта в RFC 8446 . Он предлагает улучшения безопасности и производительности по сравнению со своими предшественниками.
В этом руководстве будет показано, как включить TLS 1.3 с помощью веб-сервера Nginx в Fedora 29.
Требования
- Версия Nginx
1.13.0
или выше.
- Версия OpenSSL
1.1.1
или выше.
- Экземпляр Vultr Cloud Compute (VC2) под управлением Fedora 29.
- Действительное имя домена и правильно настроенные
A
/ AAAA
/ CNAME
DNS записи для вашего домена.
- Действительный сертификат TLS. Мы получим один от Let's Encrypt.
Прежде чем вы начнете
Проверьте версию Fedora.
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)
Создайте новую non-root
учетную запись пользователя с sudo
доступом и переключитесь на нее.
useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe
ПРИМЕЧАНИЕ. Замените johndoe
на свое имя пользователя.
Установите часовой пояс.
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Убедитесь, что ваша система обновлена.
sudo dnf check-upgrade || sudo dnf upgrade -y
Установите необходимые пакеты.
sudo dnf install -y socat git
Отключить SELinux и Firewall.
sudo setenforce 0 ; sudo systemctl stop firewalld ; sudo systemctl disable firewalld
Установите клиент Acme.sh и получите сертификат TLS от Let's Encrypt
В этом руководстве мы будем использовать клиент Acme.sh для получения SSL-сертификатов от Let's Encrypt. Вы можете использовать клиент, с которым вы наиболее знакомы.
Скачать и установить Acme.sh .
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
Проверьте версию.
/etc/letsencrypt/acme.sh --version
# v2.8.1
Получите сертификаты RSA и ECDSA для вашего домена.
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256
ПРИМЕЧАНИЕ. Замените example.com
в командах имя вашего домена.
После выполнения предыдущих команд ваши сертификаты и ключи будут доступны по адресу:
- RSA:
/etc/letsencrypt/example.com
.
- ECC / ECDSA:
/etc/letsencrypt/example.com_ecc
.
Установить Nginx
Nginx добавил поддержку TLS 1.3 в версии 1.13.0. Fedora 29 поставляется с Nginx и OpenSSL, которые поддерживают TLS 1.3 из коробки, поэтому нет необходимости создавать пользовательскую версию.
Установите Nginx.
sudo dnf install -y nginx
Проверьте версию.
nginx -v
# nginx version: nginx/1.14.2
Проверьте версию OpenSSL, относительно которой был скомпилирован Nginx.
nginx -V
# built with OpenSSL 1.1.1b FIPS 26 Feb 2019
Запустите и включите Nginx.
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Теперь, когда мы успешно установили Nginx, мы готовы настроить его для правильной конфигурации, чтобы начать использовать TLS 1.3 на нашем сервере.
Запустите sudo vim /etc/nginx/conf.d/example.com.conf
команду и заполните файл следующей конфигурацией.
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;
}
Сохраните файл и выйдите с помощью :+ W+ Q.
Обратите внимание на новый TLSv1.3
параметр ssl_protocols
директивы. Этот параметр необходим только для включения TLS 1.3 в Nginx.
Проверьте конфигурацию.
sudo nginx -t
Перезагрузить Nginx.
sudo systemctl reload nginx.service
Для проверки TLS 1.3 вы можете использовать инструменты разработчика браузера или службу SSL Labs. На скриншотах ниже показана вкладка безопасности Chrome.


Вот и все. Вы успешно включили TLS 1.3 в Nginx на своем сервере Fedora 29. Окончательная версия TLS 1.3 была определена в августе 2018 года, поэтому нет лучшего времени, чтобы начать применять эту новую технологию.