RFC 9325
Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)
Best Current Practice Obsoletes: RFC 7525 November 2022
Abstract: This document provides recommendations for secure use of TLS and DTLS. It updates BCP 195 to cover TLS 1.3 and DTLS 1.3, specifying recommended protocol versions, cipher suites, extensions, and operational practices.
Canonical source: https://www.rfc-editor.org/rfc/rfc9325
| IETF Datatracker
1. Introduction
▶BCP 195 (RFC 9325, obsoleting RFC 7525) provides security recommendations for TLS/DTLS deployments. 3GPP security specifications reference these best practices for operator network security profiles.
2. Protocol Version Recommendations
▶| Version | Recommendation | Notes |
|---|---|---|
| TLS 1.3 | MUST | Preferred for all new deployments |
| TLS 1.2 | MAY (with restrictions) | Only with AEAD cipher suites and ECDHE key exchange |
| TLS 1.1 | MUST NOT | Deprecated |
| TLS 1.0 | MUST NOT | Deprecated |
| SSL 3.0 | MUST NOT | Broken (POODLE) |
| DTLS 1.3 | MUST | For datagram-based protocols |
| DTLS 1.2 | MAY (with restrictions) | Only with AEAD cipher suites |
3. Cipher Suite Recommendations
▶- MUST: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384 for TLS 1.3
- SHOULD: TLS_CHACHA20_POLY1305_SHA256 for TLS 1.3
- MUST NOT: Any cipher suite using RC4, DES, 3DES, EXPORT-grade, NULL, or static RSA key exchange
- TLS 1.2 only: MUST use AEAD (GCM or CCM), MUST use ECDHE or DHE for forward secrecy
- Compression: MUST NOT use TLS compression (CRIME attack)
4. Certificate and Key Recommendations
▶- RSA keys: Minimum 2048 bits, SHOULD use 3072+ bits
- ECDSA keys: P-256 (secp256r1) minimum, SHOULD support P-384
- Signature algorithms: MUST support ECDSA and RSA-PSS, MUST NOT use PKCS#1 v1.5 with TLS 1.3
- Certificate validation: MUST verify full chain, check revocation (OCSP/CRL), validate SAN
- Wildcard certificates: SHOULD be avoided in operator core network deployments
5. Extension Recommendations
▶- SNI: MUST send Server Name Indication for virtual hosting and certificate selection
- ALPN: SHOULD use Application-Layer Protocol Negotiation (e.g., 'h2' for HTTP/2)
- OCSP stapling: SHOULD support status_request extension for online certificate status
- Session tickets: If used, MUST be encrypted with a key not derived from the connection
- Renegotiation: N/A in TLS 1.3 (removed); in TLS 1.2 MUST use renegotiation_info
6. Operational Best Practices
▶- Disable TLS 1.0 and 1.1 entirely — not just deprioritize
- Monitor certificate expiry and automate renewal (CMPv2/EST)
- Use certificate pinning cautiously — can cause operational issues with CA rotation
- Log TLS handshake failures for security monitoring
- Implement proper session cache management to prevent memory exhaustion