Latest update - 7477
This commit is contained in:
@@ -619,23 +619,29 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
|
|||||||
X509 *x509, *temp;
|
X509 *x509, *temp;
|
||||||
u_long n;
|
u_long n;
|
||||||
|
|
||||||
if (ngx_get_full_name(pool, (ngx_str_t *) &ngx_cycle->conf_prefix, cert)
|
if (ngx_strncmp(cert->data, "data:", sizeof("data:") - 1) == 0) {
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
*err = NULL;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
bio = BIO_new_mem_buf(cert->data + sizeof("data:") - 1,
|
||||||
* we can't use SSL_CTX_use_certificate_chain_file() as it doesn't
|
cert->len - (sizeof("data:") - 1));
|
||||||
* allow to access certificate later from SSL_CTX, so we reimplement
|
if (bio == NULL) {
|
||||||
* it here
|
*err = "BIO_new_mem_buf() failed";
|
||||||
*/
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
bio = BIO_new_file((char *) cert->data, "r");
|
} else {
|
||||||
if (bio == NULL) {
|
|
||||||
*err = "BIO_new_file() failed";
|
if (ngx_get_full_name(pool, (ngx_str_t *) &ngx_cycle->conf_prefix, cert)
|
||||||
return NULL;
|
!= NGX_OK)
|
||||||
|
{
|
||||||
|
*err = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bio = BIO_new_file((char *) cert->data, "r");
|
||||||
|
if (bio == NULL) {
|
||||||
|
*err = "BIO_new_file() failed";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* certificate itself */
|
/* certificate itself */
|
||||||
@@ -709,9 +715,8 @@ ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
|||||||
|
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
|
|
||||||
u_char *p, *last;
|
u_char *p, *last;
|
||||||
ENGINE *engine;
|
ENGINE *engine;
|
||||||
EVP_PKEY *pkey;
|
|
||||||
|
|
||||||
p = key->data + sizeof("engine:") - 1;
|
p = key->data + sizeof("engine:") - 1;
|
||||||
last = (u_char *) ngx_strchr(p, ':');
|
last = (u_char *) ngx_strchr(p, ':');
|
||||||
@@ -752,17 +757,29 @@ ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_get_full_name(pool, (ngx_str_t *) &ngx_cycle->conf_prefix, key)
|
if (ngx_strncmp(key->data, "data:", sizeof("data:") - 1) == 0) {
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
*err = NULL;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
bio = BIO_new_file((char *) key->data, "r");
|
bio = BIO_new_mem_buf(key->data + sizeof("data:") - 1,
|
||||||
if (bio == NULL) {
|
key->len - (sizeof("data:") - 1));
|
||||||
*err = "BIO_new_file() failed";
|
if (bio == NULL) {
|
||||||
return NULL;
|
*err = "BIO_new_mem_buf() failed";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (ngx_get_full_name(pool, (ngx_str_t *) &ngx_cycle->conf_prefix, key)
|
||||||
|
!= NGX_OK)
|
||||||
|
{
|
||||||
|
*err = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bio = BIO_new_file((char *) key->data, "r");
|
||||||
|
if (bio == NULL) {
|
||||||
|
*err = "BIO_new_file() failed";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (passwords) {
|
if (passwords) {
|
||||||
|
|||||||
Reference in New Issue
Block a user