Сoздание и использование TLS/SSL
Протокол SSL обеспечивает защищённый обмен данными за счёт следующих элементов – аутентификации и шифрования.
SSL использует:
Асимметричную криптографию для аутентификации ключей обмена.
Симметричный шифр для сохранения конфиденциальности.
Коды аутентификации сообщений для целостности сообщений.
Протокол SSL предоставляет безопасный канал, который имеет следующие основные свойства:
Канал является частным. Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.
Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, а клиентская делает это опционально.
Канал надёжен. Транспортировка сообщений включает в себя проверку целостности.
Создание TLS/SSL сертификата
Для создания или генерации сертификата:
Возможно использовать сервис «Let's Encrypt».
Приобрести сертификат у авторизованного сервиса.
Создать самоподписанный сертификат (selfsigned). При таком подходе обеспечивается защита соединения, но при попытке доступа к сервису возникнет предупреждение о потенциальной небезопасности сертификата и сетевого подключения.
Генерация самоподписанного сертификата
Пример генерации RSA сертификата с указанием домена:
# Selfsigned RSA certificate
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \
-nodes -keyout example.com.key -out example.com.crt -subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1"
Генерация Elliptic curve сертификата:
# Selfsigned EC certificate
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -days 3650 \
-nodes -keyout example.com.key -out example.com.crt -subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1"