tls <string> {
ca-file <quoted_string>;
cert-file <quoted_string>;
+ cipher-suites <string>;
ciphers <string>;
dhparam-file <quoted_string>;
key-file <quoted_string>;
isc_log_t *logctx, isc_symtab_t *symtab) {
isc_result_t result, tresult;
const cfg_obj_t *tls_proto_list = NULL, *tls_key = NULL,
- *tls_cert = NULL, *tls_ciphers = NULL;
+ *tls_cert = NULL, *tls_ciphers = NULL,
+ *tls_cipher_suites = NULL;
uint32_t tls_protos = 0;
isc_symvalue_t symvalue;
}
}
+ /* Check if the cipher suites string is valid */
+ tresult = cfg_map_get(tlsobj, "cipher-suites", &tls_cipher_suites);
+ if (tresult == ISC_R_SUCCESS) {
+ const char *cipher_suites = cfg_obj_asstring(tls_cipher_suites);
+ if (!isc_tls_cipher_suites_valid(cipher_suites)) {
+ cfg_obj_log(
+ tls_cipher_suites, logctx, ISC_LOG_ERROR,
+ "'cipher-suites' in the 'tls' clause '%s' is "
+ "not a valid cipher suites string",
+ name);
+ result = ISC_R_FAILURE;
+ }
+ }
+
return (result);
}
{ "dhparam-file", &cfg_type_qstring, 0 },
{ "protocols", &cfg_type_tlsprotos, 0 },
{ "ciphers", &cfg_type_astring, 0 },
+#ifdef HAVE_SSL_CTX_SET_CIPHERSUITES
+ { "cipher-suites", &cfg_type_astring, 0 },
+#else
+ { "cipher-suites", &cfg_type_astring, CFG_CLAUSEFLAG_NOTCONFIGURED },
+#endif
{ "prefer-server-ciphers", &cfg_type_boolean, 0 },
{ "session-tickets", &cfg_type_boolean, 0 },
{ NULL, NULL, 0 }