Я использую nginx 1.11.7
с участием Openssl 1.1.0c
на Debian 8 и иметь самоподписанный сертификат ecc с 384-битным ключом для тестирования.
Я хотел бы использовать кривые X25519, secp384r1 и secp256r1.
Nginx запускается нормально с X25519 и включенным secp384r1 в конфигурации nginx:
ssl_ecdh_curve X25519:secp384r1;
,
но отказывается перезапускаться / перезагружаться при использовании secp256r1:
ssl_ecdh_curve secp256r1;
Сообщение об ошибке: SSL_CTX_set1_curves_list("secp256r1") failed (SSL:)
.
Итак, как я могу использовать кривую secp256r1 с упомянутой выше настройкой?
Оказывается, P-256 был удален из списка.
Видеть:
Why Is TLS 1.3 an advancement over TLS 1.2 or 1.1?
TLS 1.3 removes support for known insecure ciphers such as RC4, DES, 3DES and export grade ciphers as well older hashing algorithms e.g. SHA-1 and MD5. These are welcome changes that should help to reduce the possibility of further vulnerabilities such as SWEET32 and FREAK being present within the code of TLS libraries e.g. OpenSSL.
This reduces the attack surface (defined within the second paragraph of this blog post) of TLS 1.3 but the improvements don’t stop there. Cipher suites such as NIST P-256 and AES-GCM are being removed as primitives with only x25519, ChaCha20 and Poly1305 remaining developed by Dan Bernstein (who uses the handle djb).
Отсюда: securityinaction.wordpress.com
Правильный синтаксис для этой версии nginx:
ssl_ecdh_curve P-256;