Loading mod_ssl.c +5 −11 Changes for mod_ssl.c: 5 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -285,11 +285,6 @@ static int ssl_hook_pre_connection(conn_rec *c) SSL_set_tmp_rsa_callback(ssl, ssl_callback_TmpRSA); SSL_set_tmp_dh_callback(ssl, ssl_callback_TmpDH); /* * Predefine some client verification results */ apr_table_setn(c->notes, "ssl::verify::error", NULL); apr_table_setn(c->notes, "ssl::verify::info", NULL); SSL_set_verify_result(ssl, X509_V_OK); /* Loading Loading @@ -336,7 +331,6 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) { int n, err; X509 *xs; char *cp = NULL; conn_rec *c = (conn_rec*)SSL_get_app_data (pRec->pssl); SSLConnRec *sslconn = myConnConfig(c); SSLSrvConfigRec *sc = mySrvConfig(c->base_server); Loading Loading @@ -412,8 +406,7 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) verify_result = SSL_get_verify_result(pRec->pssl); if (verify_result != X509_V_OK || ((cp = (char *)apr_table_get(c->notes, "ssl::verify::error")) != NULL)) sslconn->verify_error != NULL) { if (ssl_verify_error_is_optional(verify_result) && (sc->nVerifyClient == SSL_CVERIFY_OPTIONAL_NO_CA)) Loading @@ -433,11 +426,12 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) } else { const char *verror = const char *error = sslconn->verify_error ? sslconn->verify_error : X509_verify_cert_error_string(verify_result); ssl_log(c->base_server, SSL_LOG_ERROR|SSL_ADD_SSLERR, "SSL client authentication failed: %s", cp ? cp : verror ? verror : "unknown"); error ? error : "unknown"); return ssl_abort(pRec, c); } } Loading @@ -446,7 +440,7 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) * Remember the peer certificate's DN */ if ((xs = SSL_get_peer_certificate(pRec->pssl)) != NULL) { cp = X509_NAME_oneline(X509_get_subject_name(xs), NULL, 0); char *cp = X509_NAME_oneline(X509_get_subject_name(xs), NULL, 0); sslconn->client_dn = apr_pstrdup(c->pool, cp); free(cp); } Loading mod_ssl.h +2 −0 Changes for mod_ssl.h: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -460,6 +460,8 @@ typedef struct { SSL *ssl; const char *client_dn; ssl_shutdown_type_e shutdown_type; const char *verify_info; const char *verify_error; } SSLConnRec; typedef struct { Loading ssl_engine_kernel.c +5 −5 Changes for ssl_engine_kernel.c: 5 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -1258,7 +1258,7 @@ int ssl_callback_SSLVerify(int ok, X509_STORE_CTX *ctx) ssl_log(s, SSL_LOG_TRACE, "Certificate Verification: Verifiable Issuer is configured as " "optional, therefore we're accepting the certificate"); apr_table_setn(conn->notes, "ssl::verify::info", "GENEROUS"); sslconn->verify_info = "GENEROUS"; ok = TRUE; } Loading @@ -1278,8 +1278,8 @@ int ssl_callback_SSLVerify(int ok, X509_STORE_CTX *ctx) ssl_log(s, SSL_LOG_ERROR, "Certificate Verification: Error (%d): %s", errnum, X509_verify_cert_error_string(errnum)); sslconn->client_dn = NULL; apr_table_setn(conn->notes, "ssl::verify::error", (void *)X509_verify_cert_error_string(errnum)); sslconn->verify_error = X509_verify_cert_error_string(errnum); } /* Loading @@ -1294,8 +1294,8 @@ int ssl_callback_SSLVerify(int ok, X509_STORE_CTX *ctx) "Certificate Verification: Certificate Chain too long " "(chain has %d certificates, but maximum allowed are only %d)", errdepth, depth); apr_table_setn(conn->notes, "ssl::verify::error", (void *)X509_verify_cert_error_string(X509_V_ERR_CERT_CHAIN_TOO_LONG)); sslconn->verify_error = X509_verify_cert_error_string(X509_V_ERR_CERT_CHAIN_TOO_LONG); ok = FALSE; } Loading ssl_engine_vars.c +5 −5 Changes for ssl_engine_vars.c: 5 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -499,15 +499,15 @@ static char *ssl_var_lookup_ssl_cert_verify(apr_pool_t *p, conn_rec *c) SSLConnRec *sslconn = myConnConfig(c); char *result; long vrc; char *verr; char *vinfo; const char *verr; const char *vinfo; SSL *ssl; X509 *xs; result = NULL; ssl = sslconn->ssl; verr = (char *)apr_table_get(c->notes, "ssl::verify::error"); vinfo = (char *)apr_table_get(c->notes, "ssl::verify::info"); verr = sslconn->verify_error; vinfo = sslconn->verify_info; vrc = SSL_get_verify_result(ssl); xs = SSL_get_peer_certificate(ssl); Loading Loading @@ -649,7 +649,7 @@ static const char *ssl_var_log_handler_c(request_rec *r, char *a) else if (strEQ(a, "errcode")) result = "-"; else if (strEQ(a, "errstr")) result = (char *)apr_table_get(r->connection->notes, "ssl::verify::error"); result = (char *)sslconn->verify_error; if (result != NULL && result[0] == NUL) result = NULL; return result; Loading Loading
mod_ssl.c +5 −11 Changes for mod_ssl.c: 5 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -285,11 +285,6 @@ static int ssl_hook_pre_connection(conn_rec *c) SSL_set_tmp_rsa_callback(ssl, ssl_callback_TmpRSA); SSL_set_tmp_dh_callback(ssl, ssl_callback_TmpDH); /* * Predefine some client verification results */ apr_table_setn(c->notes, "ssl::verify::error", NULL); apr_table_setn(c->notes, "ssl::verify::info", NULL); SSL_set_verify_result(ssl, X509_V_OK); /* Loading Loading @@ -336,7 +331,6 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) { int n, err; X509 *xs; char *cp = NULL; conn_rec *c = (conn_rec*)SSL_get_app_data (pRec->pssl); SSLConnRec *sslconn = myConnConfig(c); SSLSrvConfigRec *sc = mySrvConfig(c->base_server); Loading Loading @@ -412,8 +406,7 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) verify_result = SSL_get_verify_result(pRec->pssl); if (verify_result != X509_V_OK || ((cp = (char *)apr_table_get(c->notes, "ssl::verify::error")) != NULL)) sslconn->verify_error != NULL) { if (ssl_verify_error_is_optional(verify_result) && (sc->nVerifyClient == SSL_CVERIFY_OPTIONAL_NO_CA)) Loading @@ -433,11 +426,12 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) } else { const char *verror = const char *error = sslconn->verify_error ? sslconn->verify_error : X509_verify_cert_error_string(verify_result); ssl_log(c->base_server, SSL_LOG_ERROR|SSL_ADD_SSLERR, "SSL client authentication failed: %s", cp ? cp : verror ? verror : "unknown"); error ? error : "unknown"); return ssl_abort(pRec, c); } } Loading @@ -446,7 +440,7 @@ int ssl_hook_process_connection(SSLFilterRec *pRec) * Remember the peer certificate's DN */ if ((xs = SSL_get_peer_certificate(pRec->pssl)) != NULL) { cp = X509_NAME_oneline(X509_get_subject_name(xs), NULL, 0); char *cp = X509_NAME_oneline(X509_get_subject_name(xs), NULL, 0); sslconn->client_dn = apr_pstrdup(c->pool, cp); free(cp); } Loading
mod_ssl.h +2 −0 Changes for mod_ssl.h: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -460,6 +460,8 @@ typedef struct { SSL *ssl; const char *client_dn; ssl_shutdown_type_e shutdown_type; const char *verify_info; const char *verify_error; } SSLConnRec; typedef struct { Loading
ssl_engine_kernel.c +5 −5 Changes for ssl_engine_kernel.c: 5 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -1258,7 +1258,7 @@ int ssl_callback_SSLVerify(int ok, X509_STORE_CTX *ctx) ssl_log(s, SSL_LOG_TRACE, "Certificate Verification: Verifiable Issuer is configured as " "optional, therefore we're accepting the certificate"); apr_table_setn(conn->notes, "ssl::verify::info", "GENEROUS"); sslconn->verify_info = "GENEROUS"; ok = TRUE; } Loading @@ -1278,8 +1278,8 @@ int ssl_callback_SSLVerify(int ok, X509_STORE_CTX *ctx) ssl_log(s, SSL_LOG_ERROR, "Certificate Verification: Error (%d): %s", errnum, X509_verify_cert_error_string(errnum)); sslconn->client_dn = NULL; apr_table_setn(conn->notes, "ssl::verify::error", (void *)X509_verify_cert_error_string(errnum)); sslconn->verify_error = X509_verify_cert_error_string(errnum); } /* Loading @@ -1294,8 +1294,8 @@ int ssl_callback_SSLVerify(int ok, X509_STORE_CTX *ctx) "Certificate Verification: Certificate Chain too long " "(chain has %d certificates, but maximum allowed are only %d)", errdepth, depth); apr_table_setn(conn->notes, "ssl::verify::error", (void *)X509_verify_cert_error_string(X509_V_ERR_CERT_CHAIN_TOO_LONG)); sslconn->verify_error = X509_verify_cert_error_string(X509_V_ERR_CERT_CHAIN_TOO_LONG); ok = FALSE; } Loading
ssl_engine_vars.c +5 −5 Changes for ssl_engine_vars.c: 5 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -499,15 +499,15 @@ static char *ssl_var_lookup_ssl_cert_verify(apr_pool_t *p, conn_rec *c) SSLConnRec *sslconn = myConnConfig(c); char *result; long vrc; char *verr; char *vinfo; const char *verr; const char *vinfo; SSL *ssl; X509 *xs; result = NULL; ssl = sslconn->ssl; verr = (char *)apr_table_get(c->notes, "ssl::verify::error"); vinfo = (char *)apr_table_get(c->notes, "ssl::verify::info"); verr = sslconn->verify_error; vinfo = sslconn->verify_info; vrc = SSL_get_verify_result(ssl); xs = SSL_get_peer_certificate(ssl); Loading Loading @@ -649,7 +649,7 @@ static const char *ssl_var_log_handler_c(request_rec *r, char *a) else if (strEQ(a, "errcode")) result = "-"; else if (strEQ(a, "errstr")) result = (char *)apr_table_get(r->connection->notes, "ssl::verify::error"); result = (char *)sslconn->verify_error; if (result != NULL && result[0] == NUL) result = NULL; return result; Loading