Revert "Default SSL_set_enforce_rsa_key_usage to enabled."
This reverts commit 64393b57e8734b92a6ba784bcfc02b1aa01e5ff2. We'll
reland this change in January. Projects that rely on this revert should
use SSL_set_enforce_rsa_key_usage, available since 2019, to control the
security check without being reliant on the defaults.
Bug: 519
Change-Id: Icf53eae8c29f316c7df4ec1a7c16626ac3af8560
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/55005
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index a6ca0ab..4d56d37 100644
--- a/ssl/ssl_lib.cc
+++ b/ssl/ssl_lib.cc
@@ -687,7 +687,7 @@
signed_cert_timestamps_enabled(false),
ocsp_stapling_enabled(false),
channel_id_enabled(false),
- enforce_rsa_key_usage(true),
+ enforce_rsa_key_usage(false),
retain_only_sha256_of_client_certs(false),
handoff(false),
shed_handshake_config(false),
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 655226c..5c6ef4f 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -15613,6 +15613,9 @@
},
shouldFail: true,
expectedError: ":KEY_USAGE_BIT_INCORRECT:",
+ flags: []string{
+ "-enforce-rsa-key-usage",
+ },
})
testCases = append(testCases, testCase{
@@ -15624,6 +15627,9 @@
Certificates: []Certificate{dsCert},
CipherSuites: dsSuites,
},
+ flags: []string{
+ "-enforce-rsa-key-usage",
+ },
})
// TLS 1.3 removes the encipherment suites.
@@ -15637,6 +15643,9 @@
Certificates: []Certificate{encCert},
CipherSuites: encSuites,
},
+ flags: []string{
+ "-enforce-rsa-key-usage",
+ },
})
testCases = append(testCases, testCase{
@@ -15650,6 +15659,9 @@
},
shouldFail: true,
expectedError: ":KEY_USAGE_BIT_INCORRECT:",
+ flags: []string{
+ "-enforce-rsa-key-usage",
+ },
})
// In 1.2 and below, we should not enforce without the enforce-rsa-key-usage flag.
@@ -15662,7 +15674,6 @@
Certificates: []Certificate{dsCert},
CipherSuites: encSuites,
},
- flags: []string{"-no-enforce-rsa-key-usage"},
})
testCases = append(testCases, testCase{
@@ -15674,22 +15685,20 @@
Certificates: []Certificate{encCert},
CipherSuites: dsSuites,
},
- flags: []string{"-no-enforce-rsa-key-usage"},
})
}
if ver.version >= VersionTLS13 {
- // In 1.3 and above, we enforce keyUsage even when disabled.
+ // In 1.3 and above, we enforce keyUsage even without the flag.
testCases = append(testCases, testCase{
testType: clientTest,
- name: "RSAKeyUsage-Client-WantSignature-GotEncipherment-AlwaysEnforced" + ver.name,
+ name: "RSAKeyUsage-Client-WantSignature-GotEncipherment-Enforced" + ver.name,
config: Config{
MinVersion: ver.version,
MaxVersion: ver.version,
Certificates: []Certificate{encCert},
CipherSuites: dsSuites,
},
- flags: []string{"-no-enforce-rsa-key-usage"},
shouldFail: true,
expectedError: ":KEY_USAGE_BIT_INCORRECT:",
})
diff --git a/ssl/test/test_config.cc b/ssl/test/test_config.cc
index cb79dea..2671370 100644
--- a/ssl/test/test_config.cc
+++ b/ssl/test/test_config.cc
@@ -364,8 +364,7 @@
IntFlag("-install-one-cert-compression-alg",
&TestConfig::install_one_cert_compression_alg),
BoolFlag("-reverify-on-resume", &TestConfig::reverify_on_resume),
- BoolFlag("-no-enforce-rsa-key-usage",
- &TestConfig::no_enforce_rsa_key_usage),
+ BoolFlag("-enforce-rsa-key-usage", &TestConfig::enforce_rsa_key_usage),
BoolFlag("-is-handshaker-supported",
&TestConfig::is_handshaker_supported),
BoolFlag("-handshaker-resume", &TestConfig::handshaker_resume),
@@ -1743,8 +1742,8 @@
if (reverify_on_resume) {
SSL_CTX_set_reverify_on_resume(ssl_ctx, 1);
}
- if (no_enforce_rsa_key_usage) {
- SSL_set_enforce_rsa_key_usage(ssl.get(), 0);
+ if (enforce_rsa_key_usage) {
+ SSL_set_enforce_rsa_key_usage(ssl.get(), 1);
}
if (no_tls13) {
SSL_set_options(ssl.get(), SSL_OP_NO_TLSv1_3);
diff --git a/ssl/test/test_config.h b/ssl/test/test_config.h
index 6b15891..1a21ac1 100644
--- a/ssl/test/test_config.h
+++ b/ssl/test/test_config.h
@@ -177,7 +177,7 @@
bool install_cert_compression_algs = false;
int install_one_cert_compression_alg = 0;
bool reverify_on_resume = false;
- bool no_enforce_rsa_key_usage = false;
+ bool enforce_rsa_key_usage = false;
bool is_handshaker_supported = false;
bool handshaker_resume = false;
std::string handshaker_path;