Skip to content

Commit d5518a5

Browse files
committed
bugfix: set client cert verify store per connection
1 parent b0421c6 commit d5518a5

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/ngx_stream_lua_ssl_certby.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,12 +1332,12 @@ ngx_ssl_verify_callback(int ok, X509_STORE_CTX *x509_store)
13321332

13331333
int
13341334
ngx_stream_lua_ffi_ssl_verify_client(ngx_stream_lua_request_t *r,
1335-
void *cdata, int depth, char **err)
1335+
void *ca_certs, int depth, char **err)
13361336
{
13371337
ngx_stream_lua_ctx_t *ctx;
13381338
ngx_ssl_conn_t *ssl_conn;
13391339
ngx_stream_ssl_conf_t *sscf;
1340-
STACK_OF(X509) *chain = cdata;
1340+
STACK_OF(X509) *chain = ca_certs;
13411341
STACK_OF(X509_NAME) *name_chain = NULL;
13421342
X509 *x509 = NULL;
13431343
X509_NAME *subject = NULL;
@@ -1391,7 +1391,7 @@ ngx_stream_lua_ffi_ssl_verify_client(ngx_stream_lua_request_t *r,
13911391
/* set CA chain */
13921392

13931393
if (chain != NULL) {
1394-
ca_store = SSL_CTX_get_cert_store(SSL_get_SSL_CTX(ssl_conn));
1394+
ca_store = X509_STORE_new();
13951395
if (ca_store == NULL) {
13961396
*err = "SSL_CTX_get_cert_store() failed";
13971397
return NGX_ERROR;
@@ -1402,7 +1402,7 @@ ngx_stream_lua_ffi_ssl_verify_client(ngx_stream_lua_request_t *r,
14021402
name_chain = sk_X509_NAME_new_null();
14031403
if (name_chain == NULL) {
14041404
*err = "sk_X509_NAME_new_null() failed";
1405-
return NGX_ERROR;
1405+
goto failed;
14061406
}
14071407

14081408
for (i = 0; i < sk_X509_num(chain); i++) {
@@ -1432,13 +1432,20 @@ ngx_stream_lua_ffi_ssl_verify_client(ngx_stream_lua_request_t *r,
14321432
}
14331433
}
14341434

1435+
if (SSL_set0_verify_cert_store(ssl_conn, ca_store) == 0) {
1436+
*err = "SSL_set0_verify_cert_store() failed";
1437+
goto failed;
1438+
}
1439+
14351440
SSL_set_client_CA_list(ssl_conn, name_chain);
14361441
}
14371442

14381443
return NGX_OK;
14391444

14401445
failed:
14411446

1447+
X509_STORE_free(ca_store);
1448+
14421449
sk_X509_NAME_free(name_chain);
14431450

14441451
return NGX_ERROR;

0 commit comments

Comments
 (0)