diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc index 47718a28c33..cfcbd119c71 100644 --- a/iocore/net/SSLUtils.cc +++ b/iocore/net/SSLUtils.cc @@ -1404,7 +1404,9 @@ SSLMultiCertConfigLoader::_store_ssl_ctx(SSLCertLookup *lookup, const shared_SSL std::set common_names; std::unordered_map> unique_names; SSLMultiCertConfigLoader::CertLoadData data; + const SSLConfigParams *params = this->_params; + this->load_certs_and_cross_reference_names(cert_list, data, params, sslMultCertSettings.get(), common_names, unique_names); int i = 0; @@ -1919,8 +1921,15 @@ SSLMultiCertConfigLoader::load_certs_and_cross_reference_names(std::vectorcert ? (const char *)sslMultCertSettings->cert : "", SSL_CERT_SEPARATE_DELIM); - SimpleTokenizer key_tok((sslMultCertSettings && sslMultCertSettings->key ? (const char *)sslMultCertSettings->key : ""), - SSL_CERT_SEPARATE_DELIM); + + SimpleTokenizer key_tok(SSL_CERT_SEPARATE_DELIM); + if (sslMultCertSettings && sslMultCertSettings->key) { + key_tok.setString((const char *)sslMultCertSettings->key); + } else if (sslMultCertSettings && sslMultCertSettings->cert) { + key_tok.setString((const char *)sslMultCertSettings->cert); + } else { + key_tok.setString(""); + } if (sslMultCertSettings && sslMultCertSettings->key && cert_tok.getNumTokensRemaining() != key_tok.getNumTokensRemaining()) { Error("the number of certificates in ssl_cert_name and ssl_key_name doesn't match");