mirror of
https://github.com/apache/httpd.git
synced 2025-08-13 14:40:20 +00:00
mod_ssl: Catch missing, mismatched or encrypted client cert/key pairs
with SSLProxyMachineCertificateFile/Path directives. PR 52212, PR 54698. (check at startup, to prevent segfaults at proxy request time) trunk patches: https://svn.apache.org/r1374214 https://svn.apache.org/r1374216 https://svn.apache.org/r1375445 https://svn.apache.org/r1467593 2.4.x patch: https://people.apache.org/~kbrand/PR52212_54698_2.4.x.patch Submitted by: kbrand Reviewed by: jorton, minfrin git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1476685 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
4
CHANGES
4
CHANGES
@ -22,6 +22,10 @@ Changes with Apache 2.4.5
|
|||||||
*) mod_log_config: Fix crash when logging request end time for a failed
|
*) mod_log_config: Fix crash when logging request end time for a failed
|
||||||
request. PR 54828 [Rainer Jung]
|
request. PR 54828 [Rainer Jung]
|
||||||
|
|
||||||
|
*) mod_ssl: Catch missing, mismatched or encrypted client cert/key pairs
|
||||||
|
with SSLProxyMachineCertificateFile/Path directives. PR 52212, PR 54698.
|
||||||
|
[Keith Burdis <keith burdis.org>, Joe Orton, Kaspar Brand]
|
||||||
|
|
||||||
*) mod_ssl: Quiet FIPS mode weak keys disabled and FIPS not selected emits
|
*) mod_ssl: Quiet FIPS mode weak keys disabled and FIPS not selected emits
|
||||||
in the error log to debug level. [William Rowe]
|
in the error log to debug level. [William Rowe]
|
||||||
|
|
||||||
|
10
STATUS
10
STATUS
@ -90,16 +90,6 @@ RELEASE SHOWSTOPPERS:
|
|||||||
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
|
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
|
||||||
[ start all new proposals below, under PATCHES PROPOSED. ]
|
[ start all new proposals below, under PATCHES PROPOSED. ]
|
||||||
|
|
||||||
* mod_ssl: Catch missing, mismatched or encrypted client cert/key pairs
|
|
||||||
with SSLProxyMachineCertificateFile/Path directives. PR 52212, PR 54698.
|
|
||||||
(check at startup, to prevent segfaults at proxy request time)
|
|
||||||
trunk patches: https://svn.apache.org/r1374214
|
|
||||||
https://svn.apache.org/r1374216
|
|
||||||
https://svn.apache.org/r1375445
|
|
||||||
https://svn.apache.org/r1467593
|
|
||||||
2.4.x patch: https://people.apache.org/~kbrand/PR52212_54698_2.4.x.patch
|
|
||||||
2.2.x patch: https://people.apache.org/~kbrand/PR52212_54698_2.2.x.patch
|
|
||||||
+1: kbrand, jorton, minfrin
|
|
||||||
|
|
||||||
|
|
||||||
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
|
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
|
||||||
|
@ -1354,7 +1354,8 @@ static void ssl_init_proxy_certs(server_rec *s,
|
|||||||
for (n = 0; n < ncerts; n++) {
|
for (n = 0; n < ncerts; n++) {
|
||||||
X509_INFO *inf = sk_X509_INFO_value(sk, n);
|
X509_INFO *inf = sk_X509_INFO_value(sk, n);
|
||||||
|
|
||||||
if (!inf->x509 || !inf->x_pkey) {
|
if (!inf->x509 || !inf->x_pkey || !inf->x_pkey->dec_pkey ||
|
||||||
|
inf->enc_data) {
|
||||||
sk_X509_INFO_free(sk);
|
sk_X509_INFO_free(sk);
|
||||||
ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s, APLOGNO(02252)
|
ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s, APLOGNO(02252)
|
||||||
"incomplete client cert configured for SSL proxy "
|
"incomplete client cert configured for SSL proxy "
|
||||||
@ -1362,6 +1363,15 @@ static void ssl_init_proxy_certs(server_rec *s,
|
|||||||
ssl_die(s);
|
ssl_die(s);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (X509_check_private_key(inf->x509, inf->x_pkey->dec_pkey) != 1) {
|
||||||
|
ssl_log_xerror(SSLLOG_MARK, APLOG_STARTUP, 0, ptemp, s, inf->x509,
|
||||||
|
APLOGNO(02326) "proxy client certificate and "
|
||||||
|
"private key do not match");
|
||||||
|
ssl_log_ssl_error(SSLLOG_MARK, APLOG_ERR, s);
|
||||||
|
ssl_die(s);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(02207)
|
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(02207)
|
||||||
@ -1374,7 +1384,11 @@ static void ssl_init_proxy_certs(server_rec *s,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load all of the CA certs and construct a chain */
|
/* If SSLProxyMachineCertificateChainFile is configured, load all
|
||||||
|
* the CA certs and have OpenSSL attempt to construct a full chain
|
||||||
|
* from each configured end-entity cert up to a root. This will
|
||||||
|
* allow selection of the correct cert given a list of root CA
|
||||||
|
* names in the certificate request from the server. */
|
||||||
pkp->ca_certs = (STACK_OF(X509) **) apr_pcalloc(p, ncerts * sizeof(sk));
|
pkp->ca_certs = (STACK_OF(X509) **) apr_pcalloc(p, ncerts * sizeof(sk));
|
||||||
sctx = X509_STORE_CTX_new();
|
sctx = X509_STORE_CTX_new();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user