Files
llm-wiki/raw/official-docs/rfc8996-tls10-tls11-deprecation.md

10 KiB

title, source_type, url, archive_url, status, confidence, tags, related_projects, related_branches, created, last_reviewed
title source_type url archive_url status confidence tags related_projects related_branches created last_reviewed
RFC 8996 — Deprecating TLS 1.0 and TLS 1.1 official-doc https://www.rfc-editor.org/rfc/rfc8996 raw high
tls
security
deprecation
rfc
ietf-bcp
https
caddy
nginx
keycloak
feature-keycloak-https-termination-caddy-nginx
2026-05-27 2026-05-27

RFC 8996 — Deprecating TLS 1.0 and TLS 1.1

Layer: raw/official-docs/ — IETF RFC 8996 (Best Current Practice / BCP 195, 2021-03) 발췌. TLS 1.0 / TLS 1.1 / DTLS 1.0 의 formal deprecation. 모든 implementation 이 TLS 1.0/1.1 negotiate 를 MUST NOT 으로 강제하는 normative reference.

Parent / 활용 branch (필수)

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-keycloak-https-termination-caddy-nginx D5 — Caddy/Nginx HTTPS termination 시 최소 TLS 1.2 만 허용, TLS 1.0/1.1 negotiation 차단의 표준 근거

컨텍스트

Keycloak 앞단의 Caddy/Nginx 가 HTTPS termination 을 담당할 때 default TLS 정책을 결정해야 함. "TLS 1.0/1.1 disable" 결정의 근거를 company tech blog 가 아닌 IETF BCP (Best Current Practice) 표준에서 직접 인용해야 함. RFC 7525 (BCP 195) 의 "SHOULD NOT" 을 RFC 8996 가 "MUST NOT" 으로 강화.

출처 / Source

  • 원본 URL: https://www.rfc-editor.org/rfc/rfc8996
  • 텍스트 버전: https://www.rfc-editor.org/rfc/rfc8996.txt
  • 아카이브 URL: (미수집)
  • 저자 / 조직: IETF — K. Moriarty (CIS), S. Farrell (Trinity College Dublin)
  • 발행일: 2021-03 (RFC 8996 — Best Current Practice / BCP 195 update)
  • 관련: RFC 7525 (BCP 195 — Recommendations for Secure Use of TLS/DTLS), RFC 5246 (TLS 1.2), RFC 8446 (TLS 1.3)
  • 마지막 확인일: 2026-05-27 (curl + sed 로 본문 verbatim 발췌)

왜 저장했는지 / Why archived

Caddy/Nginx 의 min_version 1.2 설정 결정의 1차 normative 근거. 사내 컴플라이언스/감사 요청 시 "왜 TLS 1.0/1.1 을 막았는가" 의 답이 "Mozilla/OWASP blog" 가 아닌 "IETF BCP 195 (RFC 8996) MUST NOT" 이어야 함.

핵심 인용 / Key quotes (verbatim, 2026-05-27 capture via curl + sed -n)

[Abstract, line 14 (in original RFC; via curl)] "This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status."

[§1 Introduction, line 109] "They require the implementation of older cipher suites that are no longer desirable for cryptographic reasons, e.g., TLS 1.0 makes TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA mandatory to implement."

[§1 Introduction, line 121] "The integrity of the handshake depends on SHA-1 hash."

[§3 SHA-1 Usage Problematic in TLS 1.0 and TLS 1.1, line 265] "The integrity of both TLS 1.0 and TLS 1.1 depends on a running SHA-1 hash of the exchanged messages. This makes it possible to perform a downgrade attack on the handshake by an attacker able to perform 2^77 operations, well below the acceptable modern security margin."

[§4 Do Not Use TLS 1.0, line 284] "TLS 1.0 MUST NOT be used. Negotiation of TLS 1.0 from any version of TLS MUST NOT be permitted."

[§5 Do Not Use TLS 1.1, line 309] "TLS 1.1 MUST NOT be used. Negotiation of TLS 1.1 from any version of TLS MUST NOT be permitted."

[§6 Updates to RFC 7525, line 348] "* Implementations MUST NOT negotiate TLS version 1.0 [RFC2246]."

[§6 Updates to RFC 7525, line 354] "* Implementations MUST NOT negotiate TLS version 1.1 [RFC4346]."

Claims Extracted / 추출된 주장

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
RFC8996-C1 RFC 8996 는 TLS 1.0 (RFC 2246) 과 TLS 1.1 (RFC 4346) 을 formal 하게 deprecate, Historic status 로 이동 [Abstract] "This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status." official-standard TLS 1.0/1.1 의 IETF 표준 status (= Historic, 더이상 권장되지 않음) 모든 vendor implementation 이 즉시 제거한다는 뜻은 아님 — 운영 환경에서는 deprecated 상태로 일부 라이브러리에 잔존 가능
RFC8996-C2 TLS 1.0/1.1 의 cipher suite 요구사항이 더이상 cryptographic 으로 desirable 하지 않음 (예: TLS 1.0 의 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA mandatory) [§1 Introduction] "They require the implementation of older cipher suites that are no longer desirable for cryptographic reasons, e.g., TLS 1.0 makes TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA mandatory to implement." official-standard TLS 1.0/1.1 의 deprecation 이유 (technical rationale) 특정 cipher 가 "broken" 되었다는 강한 진술은 아님 — no longer desirable 은 정책적 deprecation
RFC8996-C3 TLS 1.0/1.1 의 handshake integrity 는 SHA-1 running hash 에 의존, 이는 2^77 operations 내 downgrade attack 가능 (modern security margin 이하) [§3] "The integrity of both TLS 1.0 and TLS 1.1 depends on a running SHA-1 hash of the exchanged messages. This makes it possible to perform a downgrade attack on the handshake by an attacker able to perform 2^77 operations, well below the acceptable modern security margin." official-standard TLS 1.0/1.1 deprecation 의 구체적 cryptographic 근거 (SHA-1 collision resistance 약화) "2^77 operations 가 실시간 공격 가능" 의 의미는 아님 — 이론적 attack feasibility 의 lower bound. 실제 attacker resource 가 다를 수 있음
RFC8996-C4 TLS 1.0 MUST NOT be used. 어떤 TLS 버전에서도 TLS 1.0 negotiation MUST NOT permitted [§4] "TLS 1.0 MUST NOT be used. Negotiation of TLS 1.0 from any version of TLS MUST NOT be permitted." official-standard 모든 TLS implementation (client / server / proxy / load balancer) DTLS 1.0 의 동일 규정은 §6 가 별도로 다룸 (DTLS 1.0 MUST NOT negotiate) — 본 인용은 TLS only
RFC8996-C5 TLS 1.1 MUST NOT be used. 어떤 TLS 버전에서도 TLS 1.1 negotiation MUST NOT permitted [§5] "TLS 1.1 MUST NOT be used. Negotiation of TLS 1.1 from any version of TLS MUST NOT be permitted." official-standard 모든 TLS implementation TLS 1.2 가 보안적으로 충분하다는 뜻은 아님 — 본 RFC 는 1.0/1.1 deprecation 만, TLS 1.3 권장은 별도 RFC 8446
RFC8996-C6 RFC 8996 는 RFC 7525 (BCP 195) §3.1.1 의 "SHOULD NOT" 을 "MUST NOT" 으로 강화: Implementations MUST NOT negotiate TLS 1.0/1.1 [§6] "* Implementations MUST NOT negotiate TLS version 1.0 [RFC2246]." + "* Implementations MUST NOT negotiate TLS version 1.1 [RFC4346]." official-standard BCP 195 를 따르는 TLS implementation 의 normative obligation 변화 BCP 195 의 다른 권고 (cipher suite 선택, key length 등) 까지 본 RFC 가 모두 다룬다는 뜻은 아님 — §6 은 1.0/1.1 deprecation 부분만

Usage Boundaries / 적용 경계

  • 이 자료가 직접 증명하는 것:
    • RFC8996-C1~C2: TLS 1.0/1.1 의 IETF 표준 status (Historic) + deprecation 이유 (older cipher suites)
    • RFC8996-C3: SHA-1 dependency 의 구체적 cryptographic 위험
    • RFC8996-C4~C5: TLS 1.0/1.1 의 MUST NOT use + MUST NOT negotiate (양방향)
    • RFC8996-C6: BCP 195 의 강화 (SHOULD NOT → MUST NOT)
  • 이 자료가 증명하지 않는 것:
    • TLS 1.2 vs TLS 1.3 의 우선순위 (어떤 것을 default 로 강제할지) — 본 RFC 는 1.0/1.1 deprecation 만, TLS 1.3 권장은 RFC 8446 / Mozilla SSL Config Generator 별도 참조
    • 특정 cipher suite (예: AES-256-GCM, ChaCha20-Poly1305) 의 권고 — RFC 7525 / Mozilla intermediate config 별도
    • Caddy 의 default_sni / protocols tls1.2 tls1.3 설정 syntax — Caddy vendor doc 별도 검증
    • Nginx 의 ssl_protocols TLSv1.2 TLSv1.3; 설정 syntax — Nginx vendor doc 별도 검증
    • Keycloak 의 underlying JVM (Wildfly/Quarkus) 이 TLS 1.0/1.1 negotiation 을 default 로 disable 하는지 — Keycloak/JDK vendor 별도 검증
    • DTLS 1.0 deprecation 은 §6 끝부분에서 다뤄지나 본 raw 에 별도 인용 없음 (필요시 추가 발췌)
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • Caddy v2 의 default TLS policy (Caddy 는 default 로 TLS 1.2+ 만 허용하는지 vendor doc 확인)
    • Nginx ssl_protocols 명시 설정 + ssl_prefer_server_ciphers on + ssl_ciphers (Mozilla intermediate) 통합
    • 사내 client (Java HttpClient, Python requests, JS fetch) 중 TLS 1.2 미만으로 fallback 가능한지 (JDK 8u261 이전 default TLS 1.2 미강제 등)
    • 외부 통합 서비스 (legacy SOAP 등) 가 TLS 1.0/1.1 만 지원하는 경우 별도 처리 (mTLS bridge / vendor 업데이트 요청)

메모 / Notes

  • WebFetch 가 §4/§5 의 line number 를 정확히 반환하나 RFC 8996 의 §3 = "SHA-1 Usage", §4 = "Do Not Use TLS 1.0", §5 = "Do Not Use TLS 1.1" 임을 확인 (Parent 표의 "§3-§4" 표기는 §4-§5 로 정정 필요 — branch-notes 의 D5 reference 에서 별도 정정 권고).
  • §6 의 RFC 7525 update 가 BCP 195 의 normative level 을 SHOULD NOT → MUST NOT 으로 강화한 것이 핵심 운영 함의 — 단순 "권고" 가 아니라 "표준 의무" 로 격상.
  • DTLS 1.0 deprecation 은 별도 발췌 후보 (DTLS 사용 시 — WebRTC / IoT 등).
  • 운영적 함의: 기존 TLS 1.0/1.1 client 와 통신 단절. RFC 8996 §7 Operational Considerations 가 "knowledge of those risks should be used along with any potential mitigating factors" 라고 명시. 본 raw 에 별도 인용 없음.