struct ssl_iostream_context **ctx_r,
const char **error_r)
{
+ struct ssl_iostream_settings set_copy = *set;
+
+ /* Allow client to provide an invalid certificate. The caller is
+ expected to check and handle it however it wants. */
+ set_copy.allow_invalid_cert = TRUE;
+
if (!ssl_module_loaded) {
if (ssl_module_load(error_r) < 0)
return -1;
}
- if (io_stream_ssl_global_init(set, error_r) < 0)
+ if (io_stream_ssl_global_init(&set_copy, error_r) < 0)
return -1;
- return ssl_vfuncs->context_init_server(set, ctx_r, error_r);
+ return ssl_vfuncs->context_init_server(&set_copy, ctx_r, error_r);
}
void ssl_iostream_context_ref(struct ssl_iostream_context *ctx)
server_set.verify_remote_cert = TRUE;
server_set.ca = client_set.ca;
client_set.cert = server_set.cert;
-#ifdef DOVECOT_USE_OPENSSL3
- test_expect_error_string("server: SSL_accept() failed: error:0A000086:SSL routines::"
- "certificate verify failed+Received invalid SSL certificate:");
-#else
- test_expect_error_string("server: SSL_accept() failed: error:1417C086:SSL routines:"
- "tls_process_client_certificate:certificate verify failed+"
- "Received invalid SSL certificate: ");
-#endif
+ test_expect_error_string("server: Received invalid SSL certificate");
test_assert_idx(test_iostream_ssl_handshake_real(&server_set, &client_set,
"127.0.0.1") != 0, idx);
idx++;