pem_password_cb *cb = ::Config.Program.ssl_password ? &ssl_ask_password_cb : NULL;
pkey.resetWithoutLocking(readSslPrivateKey(keyFilename, cb));
cert.resetWithoutLocking(readSslX509CertificatesChain(certFilename, chain.get()));
- if (!pkey || !cert || !X509_check_private_key(cert.get(), pkey.get())) {
- pkey.reset();
- cert.reset();
- }
+ if (!cert) {
+ debugs(83, DBG_IMPORTANT, "WARNING: missing cert in '" << certFilename << "'");
+ } else if (!pkey) {
+ debugs(83, DBG_IMPORTANT, "WARNING: missing private key in '" << keyFilename << "'");
+ } else if (!X509_check_private_key(cert.get(), pkey.get())) {
+ debugs(83, DBG_IMPORTANT, "WARNING: X509_check_private_key() failed to verify signing cert");
+ } else
+ return; // everything is okay
+
+ pkey.reset();
+ cert.reset();
}
bool Ssl::generateUntrustedCert(Security::CertPointer &untrustedCert, EVP_PKEY_Pointer &untrustedPkey, Security::CertPointer const &cert, EVP_PKEY_Pointer const & pkey)