Although TLS 1.2 has technically been obsoleted by the IETF in favor of TLS 1.3, many implementations and deployments of TLS 1.2 will continue to exist. For the cases where TLS 1.2 continues to be used, implementations
MUST use [
RFC 5246] and
SHOULD implement the updates specified in [
RFC 8446] (outlined in Section
1.3 of that document).
The CNSA (D)TLS 1.2 client
MUST offer at least one of these cipher suites:
The CNSA cipher suites listed above
MUST be the first (most preferred) cipher suites in the ClientHello message.
A CNSA (D)TLS client that offers interoperability with servers that are not CNSA compliant
MAY offer additional cipher suites, but any additional cipher suites
MUST appear after the CNSA cipher suites in the ClientHello message.
A CNSA (D)TLS server
MUST accept one of the CNSA Suites above if they are offered in the ClientHello message before accepting a non-CNSA-compliant suite.
If interoperability is not desired with non-CNSA-compliant clients or servers, then the session
MUST fail if no CNSA Suites are offered or accepted.
A CNSA (D)TLS client
SHOULD include and a CNSA (D)TLS server
SHOULD accept the "extended_master_secret" extension as specified in [
RFC 7627]. See
Section 1 of
RFC 7627 for security concerns when this extension is not used.
A CNSA (D)TLS client
MUST include and a CNSA (D)TLS server
MUST also accept the "signature_algorithms" extension. The CNSA (D)TLS client
MUST offer and the CNSA (D)TLS server
MUST also accept at least one of the following values in the "signature_algorithms" extensions as specified in [
RFC 8446]:
-
ecdsa_secp384r1_sha384
-
rsa_pkcs1_sha384
And, if supported, the client
SHOULD offer and/or the server
SHOULD also accept:
-
rsa_pss_pss_sha384
-
rsa_pss_rsae_sha384
Following the guidance in [
RFC 8603], CNSA (D)TLS servers
MUST only accept ECDSA or RSA for signatures on ServerKeyExchange messages and for certification path validation.
Other client offerings
MAY be included to indicate the acceptable signature algorithms in cipher suites that are offered for interoperability with servers not compliant with CNSA and to indicate the signature algorithms that are acceptable for ServerKeyExchange messages and for certification path validation in non-compliant CNSA (D)TLS connections. These offerings
MUST NOT be accepted by a CNSA-compliant (D)TLS server.
A CNSA (D)TLS client
MAY include the "signature_algorithms_cert" extension. CNSA (D)TLS servers
MUST process the "signature_algorithms_cert" extension if it is offered per
Section 4.2.3 of
RFC 8446.
Both CNSA (D)TLS clients and servers
MUST use one of the following values for certificate path validation:
-
ecdsa_secp384r1_sha384
-
rsa_pkcs1_sha384
And, if supported,
SHOULD offer/accept:
-
rsa_pss_pss_sha384
-
rsa_pss_rsae_sha384
When a CNSA (D)TLS server is configured to authenticate the client, the server
MUST include the following values in its CertificateRequest.supported_signature_algorithms [
RFC 5246] offer:
-
ecdsa_secp384r1_sha384
-
rsa_pkcs1_sha384
And, if supported as specified in [
RFC 8446],
SHOULD offer/accept:
-
rsa_pss_pss_sha384
-
rsa_pss_rsae_sha384
A CNSA (D)TLS client
MUST use ECDSA or RSA when sending the CertificateVerify message. CNSA (D)TLS servers
MUST only accept ECDSA or RSA in the CertificateVerify message.
A CNSA (D)TLS server
MUST sign the ServerKeyExchange message using ECDSA or RSA.
Certificate Authorities (CAs) providing certificates to a CNSA (D)TLS server or client
MUST provide certificate revocation status information via a Certificate Revocation List (CRL) distribution point or using the Online Certificate Status Protocol (OCSP). A CNSA client
SHOULD request it according to
Section 4.4.2.1 of
RFC 8446. If OCSP is supported, the (D)TLS server
SHOULD provide OCSP responses in the CertificateStatus message.