@@ -1332,12 +1332,12 @@ ngx_ssl_verify_callback(int ok, X509_STORE_CTX *x509_store)
1332
1332
1333
1333
int
1334
1334
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 )
1336
1336
{
1337
1337
ngx_stream_lua_ctx_t * ctx ;
1338
1338
ngx_ssl_conn_t * ssl_conn ;
1339
1339
ngx_stream_ssl_conf_t * sscf ;
1340
- STACK_OF (X509 ) * chain = cdata ;
1340
+ STACK_OF (X509 ) * chain = ca_certs ;
1341
1341
STACK_OF (X509_NAME ) * name_chain = NULL ;
1342
1342
X509 * x509 = NULL ;
1343
1343
X509_NAME * subject = NULL ;
@@ -1391,7 +1391,7 @@ ngx_stream_lua_ffi_ssl_verify_client(ngx_stream_lua_request_t *r,
1391
1391
/* set CA chain */
1392
1392
1393
1393
if (chain != NULL ) {
1394
- ca_store = SSL_CTX_get_cert_store ( SSL_get_SSL_CTX ( ssl_conn ) );
1394
+ ca_store = X509_STORE_new ( );
1395
1395
if (ca_store == NULL ) {
1396
1396
* err = "SSL_CTX_get_cert_store() failed" ;
1397
1397
return NGX_ERROR ;
@@ -1402,7 +1402,7 @@ ngx_stream_lua_ffi_ssl_verify_client(ngx_stream_lua_request_t *r,
1402
1402
name_chain = sk_X509_NAME_new_null ();
1403
1403
if (name_chain == NULL ) {
1404
1404
* err = "sk_X509_NAME_new_null() failed" ;
1405
- return NGX_ERROR ;
1405
+ goto failed ;
1406
1406
}
1407
1407
1408
1408
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,
1432
1432
}
1433
1433
}
1434
1434
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
+
1435
1440
SSL_set_client_CA_list (ssl_conn , name_chain );
1436
1441
}
1437
1442
1438
1443
return NGX_OK ;
1439
1444
1440
1445
failed :
1441
1446
1447
+ X509_STORE_free (ca_store );
1448
+
1442
1449
sk_X509_NAME_free (name_chain );
1443
1450
1444
1451
return NGX_ERROR ;
0 commit comments