Skip to content

Commit 89b7b9f

Browse files
Update TLS profiles to Mozilla guidelines v6.0
Mozilla updated their TLS configuration guidelines to v6.0, which includes: - Removed legacy "old" profile (preserved v5.7 definition for backwards compatibility) - Changed cipher list format from "ciphers.go" to "ciphers.iana" - Added X25519MLKEM768 post-quantum hybrid curve - Fixed cipher constant names (CHACHA20_POLY1305_SHA256) Updated update-tls-profiles.sh to handle the new JSON structure and added X25519MLKEM768 curve support to tlsprofiles package. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent fd25bf7 commit 89b7b9f

3 files changed

Lines changed: 61 additions & 13 deletions

File tree

hack/tools/update-tls-profiles.sh

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ cipherNums: []uint16{
3838
EOF
3939

4040
${JQ} -r ".configurations.$1.ciphersuites.[] | . |= \"tls.\" + . + \",\"" ${TMPFILE} >> ${OUTPUT}
41-
${JQ} -r ".configurations.$1.ciphers.go[] | . |= \"tls.\" + . + \",\"" ${TMPFILE} >> ${OUTPUT}
41+
${JQ} -r ".configurations.$1.ciphers.iana[] | . |= \"tls.\" + . + \",\"" ${TMPFILE} >> ${OUTPUT}
4242

4343
cat >> ${OUTPUT} <<EOF
4444
},
@@ -63,7 +63,51 @@ EOF
6363

6464
generate_profile "modern"
6565
generate_profile "intermediate"
66-
generate_profile "old"
66+
# Only generate old profile if it exists in the guidelines
67+
if ${JQ} -e '.configurations.old' ${TMPFILE} > /dev/null 2>&1; then
68+
generate_profile "old"
69+
else
70+
# Old profile removed from Mozilla guidelines v6.0
71+
# Preserving v5.7 definition for backwards compatibility
72+
cat >> ${OUTPUT} <<'EOF'
73+
74+
var oldTLSProfile = tlsProfile{
75+
ciphers: cipherSlice{
76+
cipherNums: []uint16{
77+
tls.TLS_AES_128_GCM_SHA256,
78+
tls.TLS_AES_256_GCM_SHA384,
79+
tls.TLS_CHACHA20_POLY1305_SHA256,
80+
tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
81+
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
82+
tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
83+
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
84+
tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
85+
tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
86+
tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
87+
tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
88+
tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
89+
tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
90+
tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
91+
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
92+
tls.TLS_RSA_WITH_AES_128_GCM_SHA256,
93+
tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
94+
tls.TLS_RSA_WITH_AES_128_CBC_SHA256,
95+
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
96+
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
97+
tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA,
98+
},
99+
},
100+
curves: curveSlice{
101+
curveNums: []tls.CurveID{
102+
X25519,
103+
prime256v1,
104+
secp384r1,
105+
},
106+
},
107+
minTLSVersion: tls.VersionTLS10,
108+
}
109+
EOF
110+
fi
67111

68112
# Make go happy
69113
go fmt ${OUTPUT}

internal/shared/util/tlsprofiles/mozilla_data.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package tlsprofiles
22

33
// DO NOT EDIT, GENERATED BY hack/tools/update-tls-profiles.sh
44
// DATA SOURCE: https://ssl-config.mozilla.org/guidelines/latest.json
5-
// DATA VERSION: 5.7
5+
// DATA VERSION: 6
66

77
import (
88
"crypto/tls"
@@ -18,6 +18,7 @@ var modernTLSProfile = tlsProfile{
1818
},
1919
curves: curveSlice{
2020
curveNums: []tls.CurveID{
21+
X25519MLKEM768,
2122
X25519,
2223
prime256v1,
2324
secp384r1,
@@ -36,12 +37,13 @@ var intermediateTLSProfile = tlsProfile{
3637
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
3738
tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
3839
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
39-
tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
40-
tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
40+
tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
41+
tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
4142
},
4243
},
4344
curves: curveSlice{
4445
curveNums: []tls.CurveID{
46+
X25519MLKEM768,
4547
X25519,
4648
prime256v1,
4749
secp384r1,

internal/shared/util/tlsprofiles/tlsprofiles.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,19 @@ func cipherSuiteId(name string) uint16 {
6969

7070
// This is primarily so that we don't have to rewrite curve values in mozilla_data.go
7171
const (
72-
X25519 tls.CurveID = tls.X25519
73-
prime256v1 tls.CurveID = tls.CurveP256
74-
secp384r1 tls.CurveID = tls.CurveP384
75-
secp521r1 tls.CurveID = tls.CurveP521
72+
X25519MLKEM768 tls.CurveID = tls.X25519MLKEM768
73+
X25519 tls.CurveID = tls.X25519
74+
prime256v1 tls.CurveID = tls.CurveP256
75+
secp384r1 tls.CurveID = tls.CurveP384
76+
secp521r1 tls.CurveID = tls.CurveP521
7677
)
7778

7879
var curves = map[string]tls.CurveID{
79-
"X25519": tls.X25519,
80-
"prime256v1": tls.CurveP256,
81-
"secp384r1": tls.CurveP384,
82-
"secp521r1": tls.CurveP521,
80+
"X25519MLKEM768": tls.X25519MLKEM768,
81+
"X25519": tls.X25519,
82+
"prime256v1": tls.CurveP256,
83+
"secp384r1": tls.CurveP384,
84+
"secp521r1": tls.CurveP521,
8385
}
8486

8587
// Returns 0 for an invalid curve name

0 commit comments

Comments
 (0)