Compare commits
No commits in common. "stream-nginx-1.22-rhel-9.6.0" and "c8-stream-1.16" have entirely different histories.
stream-ngi
...
c8-stream-
2
.gitignore
vendored
2
.gitignore
vendored
@ -0,0 +1,2 @@
|
|||||||
|
SOURCES/nginx-1.16.1.tar.gz
|
||||||
|
SOURCES/poweredby.png
|
2
.nginx.metadata
Normal file
2
.nginx.metadata
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
77ce4d26481b62f7a9d83e399454df0912f01a4b SOURCES/nginx-1.16.1.tar.gz
|
||||||
|
2ec82988cd0d9b1304c95a16b28eff70f0f69abc SOURCES/poweredby.png
|
@ -1,31 +0,0 @@
|
|||||||
From 00cab63102084b89de0a3494a1d023c4b1d4982b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Felix Kaechele <felix@kaechele.ca>
|
|
||||||
Date: Sun, 7 Jun 2020 12:14:02 -0400
|
|
||||||
Subject: [PATCH 1/2] remove Werror in upstream build scripts
|
|
||||||
|
|
||||||
removes -Werror in upstream build scripts. -Werror conflicts with
|
|
||||||
-D_FORTIFY_SOURCE=2 causing warnings to turn into errors.
|
|
||||||
|
|
||||||
Signed-off-by: Felix Kaechele <felix@kaechele.ca>
|
|
||||||
---
|
|
||||||
auto/cc/gcc | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/auto/cc/gcc b/auto/cc/gcc
|
|
||||||
index a5c5c18..cdbbadb 100644
|
|
||||||
--- a/auto/cc/gcc
|
|
||||||
+++ b/auto/cc/gcc
|
|
||||||
@@ -166,7 +166,9 @@ esac
|
|
||||||
|
|
||||||
|
|
||||||
# stop on warning
|
|
||||||
-CFLAGS="$CFLAGS -Werror"
|
|
||||||
+# This combined with Fedora's FORTIFY_SOURCE=2 option causes it nginx
|
|
||||||
+# to not compile.
|
|
||||||
+#CFLAGS="$CFLAGS -Werror"
|
|
||||||
|
|
||||||
# debug
|
|
||||||
CFLAGS="$CFLAGS -g"
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
|||||||
From 62470498cca9a209aa9904668c1949f5229123af Mon Sep 17 00:00:00 2001
|
|
||||||
From: Felix Kaechele <felix@kaechele.ca>
|
|
||||||
Date: Tue, 20 Apr 2021 21:28:18 -0400
|
|
||||||
Subject: [PATCH 2/2] fix PIDFile handling
|
|
||||||
|
|
||||||
Corresponding RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1869026
|
|
||||||
|
|
||||||
Rejected upstream: https://trac.nginx.org/nginx/ticket/1897
|
|
||||||
|
|
||||||
Taken from: https://git.launchpad.net/ubuntu/+source/nginx/tree/debian/patches/nginx-fix-pidfile.patch
|
|
||||||
|
|
||||||
From original patch:
|
|
||||||
Author: Tj <ubuntu@iam.tj>
|
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864
|
|
||||||
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=876365
|
|
||||||
iLast-Update: 2020-06-24
|
|
||||||
|
|
||||||
Signed-off-by: Felix Kaechele <felix@kaechele.ca>
|
|
||||||
---
|
|
||||||
src/core/nginx.c | 24 +++++++++++++++++++++---
|
|
||||||
src/os/unix/ngx_daemon.c | 8 ++++++--
|
|
||||||
2 files changed, 27 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/core/nginx.c b/src/core/nginx.c
|
|
||||||
index 48a20e9..32c0afe 100644
|
|
||||||
--- a/src/core/nginx.c
|
|
||||||
+++ b/src/core/nginx.c
|
|
||||||
@@ -339,14 +339,21 @@ main(int argc, char *const *argv)
|
|
||||||
ngx_process = NGX_PROCESS_MASTER;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* tell-tale to detect if this is parent or child process */
|
|
||||||
+ ngx_int_t child_pid = NGX_BUSY;
|
|
||||||
+
|
|
||||||
#if !(NGX_WIN32)
|
|
||||||
|
|
||||||
if (ngx_init_signals(cycle->log) != NGX_OK) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* tell-tale that this code has been executed */
|
|
||||||
+ child_pid--;
|
|
||||||
+
|
|
||||||
if (!ngx_inherited && ccf->daemon) {
|
|
||||||
- if (ngx_daemon(cycle->log) != NGX_OK) {
|
|
||||||
+ child_pid = ngx_daemon(cycle->log);
|
|
||||||
+ if (child_pid == NGX_ERROR) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -359,8 +366,19 @@ main(int argc, char *const *argv)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- if (ngx_create_pidfile(&ccf->pid, cycle->log) != NGX_OK) {
|
|
||||||
- return 1;
|
|
||||||
+ /* If ngx_daemon() returned the child's PID in the parent process
|
|
||||||
+ * after the fork() set ngx_pid to the child_pid, which gets
|
|
||||||
+ * written to the PID file, then exit.
|
|
||||||
+ * For NGX_WIN32 always write the PID file
|
|
||||||
+ * For others, only write it from the parent process */
|
|
||||||
+ if (child_pid < NGX_OK || child_pid > NGX_OK) {
|
|
||||||
+ ngx_pid = child_pid > NGX_OK ? child_pid : ngx_pid;
|
|
||||||
+ if (ngx_create_pidfile(&ccf->pid, cycle->log) != NGX_OK) {
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (child_pid > NGX_OK) {
|
|
||||||
+ exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ngx_log_redirect_stderr(cycle) != NGX_OK) {
|
|
||||||
diff --git a/src/os/unix/ngx_daemon.c b/src/os/unix/ngx_daemon.c
|
|
||||||
index 385c49b..3719854 100644
|
|
||||||
--- a/src/os/unix/ngx_daemon.c
|
|
||||||
+++ b/src/os/unix/ngx_daemon.c
|
|
||||||
@@ -7,14 +7,17 @@
|
|
||||||
|
|
||||||
#include <ngx_config.h>
|
|
||||||
#include <ngx_core.h>
|
|
||||||
+#include <unistd.h>
|
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t
|
|
||||||
ngx_daemon(ngx_log_t *log)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
+ /* retain the return value for passing back to caller */
|
|
||||||
+ pid_t pid_child = fork();
|
|
||||||
|
|
||||||
- switch (fork()) {
|
|
||||||
+ switch (pid_child) {
|
|
||||||
case -1:
|
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "fork() failed");
|
|
||||||
return NGX_ERROR;
|
|
||||||
@@ -23,7 +26,8 @@ ngx_daemon(ngx_log_t *log)
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
- exit(0);
|
|
||||||
+ /* let caller do the exit() */
|
|
||||||
+ return pid_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngx_parent = ngx_pid;
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
|||||||
From 4e5f12d6584536ead82d20554d8f3f2ab0107b0b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lubos Uhliarik <luhliari@redhat.com>
|
|
||||||
Date: Fri, 30 Apr 2021 13:07:45 +0000
|
|
||||||
Subject: [PATCH 3/3] Support loading certificates from hardware token (PKCS#11)
|
|
||||||
|
|
||||||
---
|
|
||||||
src/event/ngx_event_openssl.c | 65 +++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 65 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
|
||||||
index d762d6b..270b200 100644
|
|
||||||
--- a/src/event/ngx_event_openssl.c
|
|
||||||
+++ b/src/event/ngx_event_openssl.c
|
|
||||||
@@ -617,6 +617,71 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
|
|
||||||
X509 *x509, *temp;
|
|
||||||
u_long n;
|
|
||||||
|
|
||||||
+ if (ngx_strncmp(cert->data, "engine:", sizeof("engine:") - 1) == 0) {
|
|
||||||
+
|
|
||||||
+#ifndef OPENSSL_NO_ENGINE
|
|
||||||
+
|
|
||||||
+ u_char *p, *last;
|
|
||||||
+ ENGINE *engine;
|
|
||||||
+
|
|
||||||
+ p = cert->data + sizeof("engine:") - 1;
|
|
||||||
+ last = (u_char *) ngx_strchr(p, ':');
|
|
||||||
+
|
|
||||||
+ if (last == NULL) {
|
|
||||||
+ *err = "invalid syntax";
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *last = '\0';
|
|
||||||
+
|
|
||||||
+ engine = ENGINE_by_id((char *) p);
|
|
||||||
+
|
|
||||||
+ if (engine == NULL) {
|
|
||||||
+ *err = "ENGINE_by_id() failed";
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!ENGINE_init(engine)) {
|
|
||||||
+ *err = "ENGINE_init() failed";
|
|
||||||
+ ENGINE_free(engine);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *last++ = ':';
|
|
||||||
+
|
|
||||||
+ struct {
|
|
||||||
+ const char *cert_id;
|
|
||||||
+ X509 *cert;
|
|
||||||
+ } params = { (char *) last, NULL };
|
|
||||||
+
|
|
||||||
+ if (!ENGINE_ctrl_cmd(engine, "LOAD_CERT_CTRL", 0, ¶ms, NULL, 1)) {
|
|
||||||
+ *err = "ENGINE_ctrl_cmd() failed - Unable to get the certificate";
|
|
||||||
+ ENGINE_free(engine);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ENGINE_finish(engine);
|
|
||||||
+ ENGINE_free(engine);
|
|
||||||
+
|
|
||||||
+ /* set chain to null */
|
|
||||||
+
|
|
||||||
+ *chain = sk_X509_new_null();
|
|
||||||
+ if (*chain == NULL) {
|
|
||||||
+ *err = "sk_X509_new_null() failed";
|
|
||||||
+ X509_free(params.cert);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return params.cert;
|
|
||||||
+
|
|
||||||
+#else
|
|
||||||
+
|
|
||||||
+ *err = "loading \"engine:...\" certificate is not supported";
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (ngx_strncmp(cert->data, "data:", sizeof("data:") - 1) == 0) {
|
|
||||||
|
|
||||||
bio = BIO_new_mem_buf(cert->data + sizeof("data:") - 1,
|
|
||||||
--
|
|
||||||
2.26.3
|
|
||||||
|
|
@ -1,782 +0,0 @@
|
|||||||
From c0f75dac24544bdae1ccfccf3d6a05c1b9243d8a Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Thu, 23 May 2024 14:09:05 +0200
|
|
||||||
Subject: [PATCH] Add ssl-pass-phrase-dialog
|
|
||||||
|
|
||||||
---
|
|
||||||
contrib/vim/syntax/nginx.vim | 1 +
|
|
||||||
src/event/ngx_event_openssl.c | 133 ++++++++++++++++++++---
|
|
||||||
src/event/ngx_event_openssl.h | 15 ++-
|
|
||||||
src/http/modules/ngx_http_grpc_module.c | 2 +-
|
|
||||||
src/http/modules/ngx_http_proxy_module.c | 2 +-
|
|
||||||
src/http/modules/ngx_http_ssl_module.c | 76 ++++++++++++-
|
|
||||||
src/http/modules/ngx_http_ssl_module.h | 2 +
|
|
||||||
src/http/modules/ngx_http_uwsgi_module.c | 2 +-
|
|
||||||
src/mail/ngx_mail_ssl_module.c | 68 +++++++++++-
|
|
||||||
src/mail/ngx_mail_ssl_module.h | 2 +
|
|
||||||
src/stream/ngx_stream_proxy_module.c | 2 +-
|
|
||||||
src/stream/ngx_stream_ssl_module.c | 62 ++++++++++-
|
|
||||||
src/stream/ngx_stream_ssl_module.h | 2 +
|
|
||||||
13 files changed, 344 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/contrib/vim/syntax/nginx.vim b/contrib/vim/syntax/nginx.vim
|
|
||||||
index 6828cd3..9df0a53 100644
|
|
||||||
--- a/contrib/vim/syntax/nginx.vim
|
|
||||||
+++ b/contrib/vim/syntax/nginx.vim
|
|
||||||
@@ -624,6 +624,7 @@ syn keyword ngxDirective contained ssl_ocsp
|
|
||||||
syn keyword ngxDirective contained ssl_ocsp_cache
|
|
||||||
syn keyword ngxDirective contained ssl_ocsp_responder
|
|
||||||
syn keyword ngxDirective contained ssl_password_file
|
|
||||||
+syn keyword ngxDirective contained ssl_pass_phrase_dialog
|
|
||||||
syn keyword ngxDirective contained ssl_prefer_server_ciphers
|
|
||||||
syn keyword ngxDirective contained ssl_preread
|
|
||||||
syn keyword ngxDirective contained ssl_protocols
|
|
||||||
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
|
||||||
index d6fe5bc..fb05ab9 100644
|
|
||||||
--- a/src/event/ngx_event_openssl.c
|
|
||||||
+++ b/src/event/ngx_event_openssl.c
|
|
||||||
@@ -9,9 +9,8 @@
|
|
||||||
#include <ngx_core.h>
|
|
||||||
#include <ngx_event.h>
|
|
||||||
|
|
||||||
-
|
|
||||||
#define NGX_SSL_PASSWORD_BUFFER_SIZE 4096
|
|
||||||
-
|
|
||||||
+#define NGX_PASS_PHRASE_ARG_MAX_LEN 255
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
ngx_uint_t engine; /* unsigned engine:1; */
|
|
||||||
@@ -20,8 +19,8 @@ typedef struct {
|
|
||||||
|
|
||||||
static X509 *ngx_ssl_load_certificate(ngx_pool_t *pool, char **err,
|
|
||||||
ngx_str_t *cert, STACK_OF(X509) **chain);
|
|
||||||
-static EVP_PKEY *ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
|
||||||
- ngx_str_t *key, ngx_array_t *passwords);
|
|
||||||
+static EVP_PKEY *ngx_ssl_load_certificate_key(ngx_pool_t *pool,
|
|
||||||
+ char **err, ngx_str_t *key, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg);
|
|
||||||
static int ngx_ssl_password_callback(char *buf, int size, int rwflag,
|
|
||||||
void *userdata);
|
|
||||||
static int ngx_ssl_verify_callback(int ok, X509_STORE_CTX *x509_store);
|
|
||||||
@@ -87,6 +86,12 @@ static time_t ngx_ssl_parse_time(
|
|
||||||
#endif
|
|
||||||
ASN1_TIME *asn1time, ngx_log_t *log);
|
|
||||||
|
|
||||||
+static int ngx_ssl_read_pstream(const char *cmd, char *buf,
|
|
||||||
+ ngx_int_t bufsize);
|
|
||||||
+
|
|
||||||
+static int ngx_ssl_pass_phrase_callback(char *buf, int bufsize,
|
|
||||||
+ int rwflag, void *u);
|
|
||||||
+
|
|
||||||
static void *ngx_openssl_create_conf(ngx_cycle_t *cycle);
|
|
||||||
static char *ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
|
|
||||||
static void ngx_openssl_exit(ngx_cycle_t *cycle);
|
|
||||||
@@ -404,7 +409,7 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
|
|
||||||
|
|
||||||
ngx_int_t
|
|
||||||
ngx_ssl_certificates(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *certs,
|
|
||||||
- ngx_array_t *keys, ngx_array_t *passwords)
|
|
||||||
+ ngx_array_t *keys, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg)
|
|
||||||
{
|
|
||||||
ngx_str_t *cert, *key;
|
|
||||||
ngx_uint_t i;
|
|
||||||
@@ -414,7 +419,7 @@ ngx_ssl_certificates(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *certs,
|
|
||||||
|
|
||||||
for (i = 0; i < certs->nelts; i++) {
|
|
||||||
|
|
||||||
- if (ngx_ssl_certificate(cf, ssl, &cert[i], &key[i], passwords)
|
|
||||||
+ if (ngx_ssl_certificate(cf, ssl, &cert[i], &key[i], passwords, dlg)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
|
||||||
@@ -427,12 +432,13 @@ ngx_ssl_certificates(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *certs,
|
|
||||||
|
|
||||||
ngx_int_t
|
|
||||||
ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert,
|
|
||||||
- ngx_str_t *key, ngx_array_t *passwords)
|
|
||||||
+ ngx_str_t *key, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg)
|
|
||||||
{
|
|
||||||
char *err;
|
|
||||||
X509 *x509;
|
|
||||||
EVP_PKEY *pkey;
|
|
||||||
STACK_OF(X509) *chain;
|
|
||||||
+ EVP_PKEY *pubkey;
|
|
||||||
|
|
||||||
x509 = ngx_ssl_load_certificate(cf->pool, &err, cert, &chain);
|
|
||||||
if (x509 == NULL) {
|
|
||||||
@@ -522,8 +528,23 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert,
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- pkey = ngx_ssl_load_certificate_key(cf->pool, &err, key, passwords);
|
|
||||||
- if (pkey == NULL) {
|
|
||||||
+ pubkey = X509_get_pubkey(x509);
|
|
||||||
+ if (!pubkey){
|
|
||||||
+ ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0,
|
|
||||||
+ "X509_get_pubkey() failed");
|
|
||||||
+ return NGX_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (dlg) {
|
|
||||||
+ dlg->cryptosystem = EVP_PKEY_get_base_id(pubkey);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ EVP_PKEY_free(pubkey);
|
|
||||||
+
|
|
||||||
+ pkey = ngx_ssl_load_certificate_key(cf->pool, &err, key, passwords, dlg);
|
|
||||||
+ if (ngx_test_config){
|
|
||||||
+ return NGX_OK;
|
|
||||||
+ } else if (pkey == NULL) {
|
|
||||||
if (err != NULL) {
|
|
||||||
ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0,
|
|
||||||
"cannot load certificate key \"%s\": %s",
|
|
||||||
@@ -593,7 +614,7 @@ ngx_ssl_connection_certificate(ngx_connection_t *c, ngx_pool_t *pool,
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- pkey = ngx_ssl_load_certificate_key(pool, &err, key, passwords);
|
|
||||||
+ pkey = ngx_ssl_load_certificate_key(pool, &err, key, passwords, NULL);
|
|
||||||
if (pkey == NULL) {
|
|
||||||
if (err != NULL) {
|
|
||||||
ngx_ssl_error(NGX_LOG_ERR, c->log, 0,
|
|
||||||
@@ -771,10 +792,81 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
|
|
||||||
return x509;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int
|
|
||||||
+ngx_ssl_read_pstream(const char *cmd, char *buf, ngx_int_t bufsize)
|
|
||||||
+{
|
|
||||||
+ FILE *fp;
|
|
||||||
+ ngx_int_t i;
|
|
||||||
+ char c;
|
|
||||||
+
|
|
||||||
+ fp = popen(cmd, "r");
|
|
||||||
+ if (fp == NULL) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (i = 0; (c = fgetc(fp)) != EOF &&
|
|
||||||
+ (i < bufsize - 1); i++) {
|
|
||||||
+
|
|
||||||
+ if (c == '\n' || c == '\r'){
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ buf[i] = c;
|
|
||||||
+ }
|
|
||||||
+ buf[i] = '\0';
|
|
||||||
+
|
|
||||||
+ pclose(fp);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+ngx_ssl_pass_phrase_callback(char *buf, int bufsize, int rwflag, void *u)
|
|
||||||
+{
|
|
||||||
+ u_char cmd[NGX_PASS_PHRASE_ARG_MAX_LEN + 1] = {0};
|
|
||||||
+ u_char *cmd_end;
|
|
||||||
+ ngx_ssl_ppdialog_conf_t *dlg = (ngx_ssl_ppdialog_conf_t *)u;
|
|
||||||
+ ngx_str_t *pass_phrase_dialog = dlg->data;
|
|
||||||
+ char cryptosystem[4] = {0};
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ /* remove exec: str from pass_phrase_dialog */
|
|
||||||
+ pass_phrase_dialog->data = pass_phrase_dialog->data + 5;
|
|
||||||
+ pass_phrase_dialog->len = pass_phrase_dialog->len - 5;
|
|
||||||
+
|
|
||||||
+ switch (dlg->cryptosystem){
|
|
||||||
+ case EVP_PKEY_RSA:
|
|
||||||
+ strncpy(cryptosystem, "RSA", 4);
|
|
||||||
+ break;
|
|
||||||
+ case EVP_PKEY_DSA:
|
|
||||||
+ strncpy(cryptosystem, "DSA", 4);
|
|
||||||
+ break;
|
|
||||||
+ case EVP_PKEY_EC:
|
|
||||||
+ strncpy(cryptosystem, "EC", 3);
|
|
||||||
+ break;
|
|
||||||
+ case EVP_PKEY_DH:
|
|
||||||
+ strncpy(cryptosystem, "DH", 3);
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ strncpy(cryptosystem, "UNK", 4);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cmd_end = ngx_snprintf(cmd, NGX_PASS_PHRASE_ARG_MAX_LEN, "%V %V %s",
|
|
||||||
+ pass_phrase_dialog, dlg->server, cryptosystem);
|
|
||||||
+ *cmd_end = '\0';
|
|
||||||
+
|
|
||||||
+ ngx_log_stderr(0, "Executing external script: %s\n", cmd);
|
|
||||||
+
|
|
||||||
+ if ((ret = ngx_ssl_read_pstream((char *)cmd, buf, bufsize)) != 0){
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return strlen(buf);
|
|
||||||
+}
|
|
||||||
|
|
||||||
static EVP_PKEY *
|
|
||||||
-ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
|
||||||
- ngx_str_t *key, ngx_array_t *passwords)
|
|
||||||
+ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err, ngx_str_t *key, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg)
|
|
||||||
{
|
|
||||||
BIO *bio;
|
|
||||||
EVP_PKEY *pkey;
|
|
||||||
@@ -870,11 +962,26 @@ ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
|
||||||
tries = 1;
|
|
||||||
pwd = NULL;
|
|
||||||
cb = NULL;
|
|
||||||
+
|
|
||||||
+ /** directive format: ssl_pass_phrase_dialog buildin|exec:filepath */
|
|
||||||
+ if (dlg && ngx_strncasecmp(dlg->data->data, (u_char *)"exec:", 5) == 0){
|
|
||||||
+ pwd = (void *)dlg;
|
|
||||||
+ cb = ngx_ssl_pass_phrase_callback;
|
|
||||||
+ } else {
|
|
||||||
+ pwd = NULL;
|
|
||||||
+ cb = NULL;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
- for ( ;; ) {
|
|
||||||
+ /* skip decrypting private keys in config test phase to avoid
|
|
||||||
+ asking for pass phase twice */
|
|
||||||
+ if (ngx_test_config){
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
+ for ( ;; ) {
|
|
||||||
pkey = PEM_read_bio_PrivateKey(bio, NULL, cb, pwd);
|
|
||||||
+
|
|
||||||
if (pkey != NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h
|
|
||||||
index eb3288b..b275a38 100644
|
|
||||||
--- a/src/event/ngx_event_openssl.h
|
|
||||||
+++ b/src/event/ngx_event_openssl.h
|
|
||||||
@@ -74,9 +74,19 @@
|
|
||||||
#define ERR_peek_error_data(d, f) ERR_peek_error_line_data(NULL, NULL, d, f)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#define NGX_SSL_PASS_PHRASE_ARG_MAX_LEN 255
|
|
||||||
+#define NGX_SSL_PASS_PHRASE_DEFAULT_VAL "builtin"
|
|
||||||
+#define NGX_SSL_SERVER_NULL "undefined"
|
|
||||||
|
|
||||||
typedef struct ngx_ssl_ocsp_s ngx_ssl_ocsp_t;
|
|
||||||
|
|
||||||
+typedef struct ngx_ssl_ppdialog_conf_s ngx_ssl_ppdialog_conf_t;
|
|
||||||
+
|
|
||||||
+struct ngx_ssl_ppdialog_conf_s {
|
|
||||||
+ ngx_str_t *data;
|
|
||||||
+ ngx_str_t *server;
|
|
||||||
+ ngx_int_t cryptosystem;
|
|
||||||
+};
|
|
||||||
|
|
||||||
struct ngx_ssl_s {
|
|
||||||
SSL_CTX *ctx;
|
|
||||||
@@ -84,7 +94,6 @@ struct ngx_ssl_s {
|
|
||||||
size_t buffer_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
-
|
|
||||||
struct ngx_ssl_connection_s {
|
|
||||||
ngx_ssl_conn_t *connection;
|
|
||||||
SSL_CTX *session_ctx;
|
|
||||||
@@ -184,9 +193,9 @@ ngx_int_t ngx_ssl_init(ngx_log_t *log);
|
|
||||||
ngx_int_t ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data);
|
|
||||||
|
|
||||||
ngx_int_t ngx_ssl_certificates(ngx_conf_t *cf, ngx_ssl_t *ssl,
|
|
||||||
- ngx_array_t *certs, ngx_array_t *keys, ngx_array_t *passwords);
|
|
||||||
+ ngx_array_t *certs, ngx_array_t *keys, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg);
|
|
||||||
ngx_int_t ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl,
|
|
||||||
- ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords);
|
|
||||||
+ ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg);
|
|
||||||
ngx_int_t ngx_ssl_connection_certificate(ngx_connection_t *c, ngx_pool_t *pool,
|
|
||||||
ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords);
|
|
||||||
|
|
||||||
diff --git a/src/http/modules/ngx_http_grpc_module.c b/src/http/modules/ngx_http_grpc_module.c
|
|
||||||
index 864fc4f..c1b5fb4 100644
|
|
||||||
--- a/src/http/modules/ngx_http_grpc_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_grpc_module.c
|
|
||||||
@@ -4925,7 +4925,7 @@ ngx_http_grpc_set_ssl(ngx_conf_t *cf, ngx_http_grpc_loc_conf_t *glcf)
|
|
||||||
if (ngx_ssl_certificate(cf, glcf->upstream.ssl,
|
|
||||||
&glcf->upstream.ssl_certificate->value,
|
|
||||||
&glcf->upstream.ssl_certificate_key->value,
|
|
||||||
- glcf->upstream.ssl_passwords)
|
|
||||||
+ glcf->upstream.ssl_passwords, NULL)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
|
||||||
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
|
|
||||||
index 7c4061c..e971396 100644
|
|
||||||
--- a/src/http/modules/ngx_http_proxy_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_proxy_module.c
|
|
||||||
@@ -4974,7 +4974,7 @@ ngx_http_proxy_set_ssl(ngx_conf_t *cf, ngx_http_proxy_loc_conf_t *plcf)
|
|
||||||
if (ngx_ssl_certificate(cf, plcf->upstream.ssl,
|
|
||||||
&plcf->upstream.ssl_certificate->value,
|
|
||||||
&plcf->upstream.ssl_certificate_key->value,
|
|
||||||
- plcf->upstream.ssl_passwords)
|
|
||||||
+ plcf->upstream.ssl_passwords, NULL)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
|
||||||
diff --git a/src/http/modules/ngx_http_ssl_module.c b/src/http/modules/ngx_http_ssl_module.c
|
|
||||||
index e765a50..6af69d1 100644
|
|
||||||
--- a/src/http/modules/ngx_http_ssl_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_ssl_module.c
|
|
||||||
@@ -17,8 +17,9 @@ typedef ngx_int_t (*ngx_ssl_variable_handler_pt)(ngx_connection_t *c,
|
|
||||||
#define NGX_DEFAULT_CIPHERS "HIGH:!aNULL:!MD5"
|
|
||||||
#define NGX_DEFAULT_ECDH_CURVE "auto"
|
|
||||||
|
|
||||||
-#define NGX_HTTP_ALPN_PROTOS "\x08http/1.1\x08http/1.0\x08http/0.9"
|
|
||||||
+static ngx_str_t ngx_ssl_server_null = ngx_string(NGX_SSL_SERVER_NULL);
|
|
||||||
|
|
||||||
+#define NGX_HTTP_ALPN_PROTOS "\x08http/1.1\x08http/1.0\x08http/0.9"
|
|
||||||
|
|
||||||
#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation
|
|
||||||
static int ngx_http_ssl_alpn_select(ngx_ssl_conn_t *ssl_conn,
|
|
||||||
@@ -53,6 +54,9 @@ static char *ngx_http_ssl_conf_command_check(ngx_conf_t *cf, void *post,
|
|
||||||
|
|
||||||
static ngx_int_t ngx_http_ssl_init(ngx_conf_t *cf);
|
|
||||||
|
|
||||||
+static char *ngx_conf_set_pass_phrase_dialog(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
||||||
+ void *conf);
|
|
||||||
+
|
|
||||||
|
|
||||||
static ngx_conf_bitmask_t ngx_http_ssl_protocols[] = {
|
|
||||||
{ ngx_string("SSLv2"), NGX_SSL_SSLv2 },
|
|
||||||
@@ -296,6 +300,13 @@ static ngx_command_t ngx_http_ssl_commands[] = {
|
|
||||||
offsetof(ngx_http_ssl_srv_conf_t, reject_handshake),
|
|
||||||
NULL },
|
|
||||||
|
|
||||||
+ { ngx_string("ssl_pass_phrase_dialog"),
|
|
||||||
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
|
|
||||||
+ ngx_conf_set_pass_phrase_dialog,
|
|
||||||
+ NGX_HTTP_SRV_CONF_OFFSET,
|
|
||||||
+ offsetof(ngx_http_ssl_srv_conf_t, pass_phrase_dialog),
|
|
||||||
+ NULL },
|
|
||||||
+
|
|
||||||
ngx_null_command
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -555,7 +566,7 @@ ngx_http_ssl_add_variables(ngx_conf_t *cf)
|
|
||||||
static void *
|
|
||||||
ngx_http_ssl_create_srv_conf(ngx_conf_t *cf)
|
|
||||||
{
|
|
||||||
- ngx_http_ssl_srv_conf_t *sscf;
|
|
||||||
+ ngx_http_ssl_srv_conf_t *sscf;
|
|
||||||
|
|
||||||
sscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_ssl_srv_conf_t));
|
|
||||||
if (sscf == NULL) {
|
|
||||||
@@ -577,6 +588,8 @@ ngx_http_ssl_create_srv_conf(ngx_conf_t *cf)
|
|
||||||
* sscf->ocsp_responder = { 0, NULL };
|
|
||||||
* sscf->stapling_file = { 0, NULL };
|
|
||||||
* sscf->stapling_responder = { 0, NULL };
|
|
||||||
+ * sscf->pass_phrase_dialog = NULL;
|
|
||||||
+ *
|
|
||||||
*/
|
|
||||||
|
|
||||||
sscf->enable = NGX_CONF_UNSET;
|
|
||||||
@@ -608,6 +621,8 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
{
|
|
||||||
ngx_http_ssl_srv_conf_t *prev = parent;
|
|
||||||
ngx_http_ssl_srv_conf_t *conf = child;
|
|
||||||
+ ngx_http_core_srv_conf_t *cscf;
|
|
||||||
+ ngx_ssl_ppdialog_conf_t dlg;
|
|
||||||
|
|
||||||
ngx_pool_cleanup_t *cln;
|
|
||||||
|
|
||||||
@@ -672,6 +687,9 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
ngx_conf_merge_str_value(conf->stapling_responder,
|
|
||||||
prev->stapling_responder, "");
|
|
||||||
|
|
||||||
+ ngx_conf_merge_str_value(conf->pass_phrase_dialog,
|
|
||||||
+ prev->pass_phrase_dialog, NGX_SSL_PASS_PHRASE_DEFAULT_VAL);
|
|
||||||
+
|
|
||||||
conf->ssl.log = cf->log;
|
|
||||||
|
|
||||||
if (conf->enable) {
|
|
||||||
@@ -734,6 +752,30 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
cln->handler = ngx_ssl_cleanup_ctx;
|
|
||||||
cln->data = &conf->ssl;
|
|
||||||
|
|
||||||
+ /** directive format: ssl_pass_phrase_dialog buildin|exec:filepath */
|
|
||||||
+ if (ngx_strncasecmp(conf->pass_phrase_dialog.data, (u_char *)"exec:", 5) == 0){
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog config directive SET: %s ", conf->pass_phrase_dialog.data);
|
|
||||||
+ } else if (ngx_strncasecmp(conf->pass_phrase_dialog.data, (u_char *)NGX_SSL_PASS_PHRASE_DEFAULT_VAL,
|
|
||||||
+ sizeof(NGX_SSL_PASS_PHRASE_DEFAULT_VAL)) != 0){
|
|
||||||
+
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog config directive accepts only the following "
|
|
||||||
+ "values: %s | exec:filepath", NGX_SSL_PASS_PHRASE_DEFAULT_VAL);
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_core_module);
|
|
||||||
+
|
|
||||||
+ dlg.data = &conf->pass_phrase_dialog;
|
|
||||||
+ if (cscf->server_name.len != 0) {
|
|
||||||
+ dlg.server = &cscf->server_name;
|
|
||||||
+ } else {
|
|
||||||
+ dlg.server = &ngx_ssl_server_null;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
|
|
||||||
|
|
||||||
if (SSL_CTX_set_tlsext_servername_callback(conf->ssl.ctx,
|
|
||||||
@@ -784,7 +826,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
/* configure certificates */
|
|
||||||
|
|
||||||
if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates,
|
|
||||||
- conf->certificate_keys, conf->passwords)
|
|
||||||
+ conf->certificate_keys, conf->passwords, &dlg)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_CONF_ERROR;
|
|
||||||
@@ -1333,3 +1375,31 @@ ngx_http_ssl_init(ngx_conf_t *cf)
|
|
||||||
|
|
||||||
return NGX_OK;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
+ngx_conf_set_pass_phrase_dialog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
||||||
+{
|
|
||||||
+ ngx_http_ssl_srv_conf_t *sscf = conf;
|
|
||||||
+ ngx_str_t *value;
|
|
||||||
+
|
|
||||||
+ if (sscf->pass_phrase_dialog.data){
|
|
||||||
+ return "is duplicate";
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ value = cf->args->elts;
|
|
||||||
+
|
|
||||||
+ sscf->pass_phrase_dialog = value[1];
|
|
||||||
+
|
|
||||||
+ if (sscf->pass_phrase_dialog.len == 0) {
|
|
||||||
+ return NGX_CONF_OK;
|
|
||||||
+ } else if (sscf->pass_phrase_dialog.len > NGX_SSL_PASS_PHRASE_ARG_MAX_LEN) {
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog argument length exceeded maximum possible length: %d",
|
|
||||||
+ NGX_SSL_PASS_PHRASE_ARG_MAX_LEN);
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_OK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
diff --git a/src/http/modules/ngx_http_ssl_module.h b/src/http/modules/ngx_http_ssl_module.h
|
|
||||||
index 7ab0f7e..2f83d75 100644
|
|
||||||
--- a/src/http/modules/ngx_http_ssl_module.h
|
|
||||||
+++ b/src/http/modules/ngx_http_ssl_module.h
|
|
||||||
@@ -67,6 +67,8 @@ typedef struct {
|
|
||||||
|
|
||||||
u_char *file;
|
|
||||||
ngx_uint_t line;
|
|
||||||
+
|
|
||||||
+ ngx_str_t pass_phrase_dialog;
|
|
||||||
} ngx_http_ssl_srv_conf_t;
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/http/modules/ngx_http_uwsgi_module.c b/src/http/modules/ngx_http_uwsgi_module.c
|
|
||||||
index d46741a..d728874 100644
|
|
||||||
--- a/src/http/modules/ngx_http_uwsgi_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_uwsgi_module.c
|
|
||||||
@@ -2461,7 +2461,7 @@ ngx_http_uwsgi_set_ssl(ngx_conf_t *cf, ngx_http_uwsgi_loc_conf_t *uwcf)
|
|
||||||
if (ngx_ssl_certificate(cf, uwcf->upstream.ssl,
|
|
||||||
&uwcf->upstream.ssl_certificate->value,
|
|
||||||
&uwcf->upstream.ssl_certificate_key->value,
|
|
||||||
- uwcf->upstream.ssl_passwords)
|
|
||||||
+ uwcf->upstream.ssl_passwords, NULL)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
|
||||||
diff --git a/src/mail/ngx_mail_ssl_module.c b/src/mail/ngx_mail_ssl_module.c
|
|
||||||
index 63af775..b3cd38e 100644
|
|
||||||
--- a/src/mail/ngx_mail_ssl_module.c
|
|
||||||
+++ b/src/mail/ngx_mail_ssl_module.c
|
|
||||||
@@ -13,6 +13,7 @@
|
|
||||||
#define NGX_DEFAULT_CIPHERS "HIGH:!aNULL:!MD5"
|
|
||||||
#define NGX_DEFAULT_ECDH_CURVE "auto"
|
|
||||||
|
|
||||||
+static ngx_str_t ngx_ssl_server_null = ngx_string(NGX_SSL_SERVER_NULL);
|
|
||||||
|
|
||||||
#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation
|
|
||||||
static int ngx_mail_ssl_alpn_select(ngx_ssl_conn_t *ssl_conn,
|
|
||||||
@@ -35,6 +36,8 @@ static char *ngx_mail_ssl_session_cache(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
||||||
static char *ngx_mail_ssl_conf_command_check(ngx_conf_t *cf, void *post,
|
|
||||||
void *data);
|
|
||||||
|
|
||||||
+static char *ngx_conf_set_pass_phrase_dialog(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
||||||
+ void *conf);
|
|
||||||
|
|
||||||
static ngx_conf_enum_t ngx_mail_starttls_state[] = {
|
|
||||||
{ ngx_string("off"), NGX_MAIL_STARTTLS_OFF },
|
|
||||||
@@ -216,6 +219,13 @@ static ngx_command_t ngx_mail_ssl_commands[] = {
|
|
||||||
offsetof(ngx_mail_ssl_conf_t, conf_commands),
|
|
||||||
&ngx_mail_ssl_conf_command_post },
|
|
||||||
|
|
||||||
+ { ngx_string("ssl_pass_phrase_dialog"),
|
|
||||||
+ NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
|
|
||||||
+ ngx_conf_set_pass_phrase_dialog,
|
|
||||||
+ NGX_MAIL_SRV_CONF_OFFSET,
|
|
||||||
+ offsetof(ngx_mail_ssl_conf_t, pass_phrase_dialog),
|
|
||||||
+ NULL },
|
|
||||||
+
|
|
||||||
ngx_null_command
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -345,6 +355,8 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
{
|
|
||||||
ngx_mail_ssl_conf_t *prev = parent;
|
|
||||||
ngx_mail_ssl_conf_t *conf = child;
|
|
||||||
+ ngx_mail_core_srv_conf_t *cscf;
|
|
||||||
+ ngx_ssl_ppdialog_conf_t dlg;
|
|
||||||
|
|
||||||
char *mode;
|
|
||||||
ngx_pool_cleanup_t *cln;
|
|
||||||
@@ -386,6 +398,8 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
|
|
||||||
ngx_conf_merge_ptr_value(conf->conf_commands, prev->conf_commands, NULL);
|
|
||||||
|
|
||||||
+ ngx_conf_merge_str_value(conf->pass_phrase_dialog,
|
|
||||||
+ prev->pass_phrase_dialog, NGX_SSL_PASS_PHRASE_DEFAULT_VAL);
|
|
||||||
|
|
||||||
conf->ssl.log = cf->log;
|
|
||||||
|
|
||||||
@@ -447,6 +461,29 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
cln->handler = ngx_ssl_cleanup_ctx;
|
|
||||||
cln->data = &conf->ssl;
|
|
||||||
|
|
||||||
+ /** directive format: ssl_pass_phrase_dialog buildin|exec:filepath */
|
|
||||||
+ if (ngx_strncasecmp(conf->pass_phrase_dialog.data, (u_char *)"exec:", 5) == 0){
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog config directive SET: %s ", conf->pass_phrase_dialog.data);
|
|
||||||
+ } else if (ngx_strncasecmp(conf->pass_phrase_dialog.data, (u_char *)NGX_SSL_PASS_PHRASE_DEFAULT_VAL,
|
|
||||||
+ sizeof(NGX_SSL_PASS_PHRASE_DEFAULT_VAL)) != 0){
|
|
||||||
+
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog config directive accepts only the following "
|
|
||||||
+ "values: %s | exec:filepath", NGX_SSL_PASS_PHRASE_DEFAULT_VAL);
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cscf = ngx_mail_conf_get_module_srv_conf(cf, ngx_mail_core_module);
|
|
||||||
+
|
|
||||||
+ dlg.data = &conf->pass_phrase_dialog;
|
|
||||||
+ if (cscf->server_name.len != 0) {
|
|
||||||
+ dlg.server = &cscf->server_name;
|
|
||||||
+ } else {
|
|
||||||
+ dlg.server = &ngx_ssl_server_null;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation
|
|
||||||
SSL_CTX_set_alpn_select_cb(conf->ssl.ctx, ngx_mail_ssl_alpn_select, NULL);
|
|
||||||
#endif
|
|
||||||
@@ -459,7 +496,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates,
|
|
||||||
- conf->certificate_keys, conf->passwords)
|
|
||||||
+ conf->certificate_keys, conf->passwords, &dlg)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_CONF_ERROR;
|
|
||||||
@@ -743,3 +780,32 @@ ngx_mail_ssl_conf_command_check(ngx_conf_t *cf, void *post, void *data)
|
|
||||||
return NGX_CONF_OK;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
+ngx_conf_set_pass_phrase_dialog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
||||||
+{
|
|
||||||
+ ngx_mail_ssl_conf_t *sscf = conf;
|
|
||||||
+ ngx_str_t *value;
|
|
||||||
+
|
|
||||||
+ if (sscf->pass_phrase_dialog.data){
|
|
||||||
+ return "is duplicate";
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ value = cf->args->elts;
|
|
||||||
+
|
|
||||||
+ sscf->pass_phrase_dialog = value[1];
|
|
||||||
+
|
|
||||||
+ if (sscf->pass_phrase_dialog.len == 0) {
|
|
||||||
+ return NGX_CONF_OK;
|
|
||||||
+ } else if (sscf->pass_phrase_dialog.len > NGX_SSL_PASS_PHRASE_ARG_MAX_LEN) {
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog argument length exceeded maximum possible length: %d",
|
|
||||||
+ NGX_SSL_PASS_PHRASE_ARG_MAX_LEN);
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_OK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
diff --git a/src/mail/ngx_mail_ssl_module.h b/src/mail/ngx_mail_ssl_module.h
|
|
||||||
index a0a6113..3d87d50 100644
|
|
||||||
--- a/src/mail/ngx_mail_ssl_module.h
|
|
||||||
+++ b/src/mail/ngx_mail_ssl_module.h
|
|
||||||
@@ -57,6 +57,8 @@ typedef struct {
|
|
||||||
|
|
||||||
u_char *file;
|
|
||||||
ngx_uint_t line;
|
|
||||||
+
|
|
||||||
+ ngx_str_t pass_phrase_dialog;
|
|
||||||
} ngx_mail_ssl_conf_t;
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/stream/ngx_stream_proxy_module.c b/src/stream/ngx_stream_proxy_module.c
|
|
||||||
index 934e7d8..34d0195 100644
|
|
||||||
--- a/src/stream/ngx_stream_proxy_module.c
|
|
||||||
+++ b/src/stream/ngx_stream_proxy_module.c
|
|
||||||
@@ -2248,7 +2248,7 @@ ngx_stream_proxy_set_ssl(ngx_conf_t *cf, ngx_stream_proxy_srv_conf_t *pscf)
|
|
||||||
if (ngx_ssl_certificate(cf, pscf->ssl,
|
|
||||||
&pscf->ssl_certificate->value,
|
|
||||||
&pscf->ssl_certificate_key->value,
|
|
||||||
- pscf->ssl_passwords)
|
|
||||||
+ pscf->ssl_passwords, NULL)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
|
||||||
diff --git a/src/stream/ngx_stream_ssl_module.c b/src/stream/ngx_stream_ssl_module.c
|
|
||||||
index f922ac4..66b4b67 100644
|
|
||||||
--- a/src/stream/ngx_stream_ssl_module.c
|
|
||||||
+++ b/src/stream/ngx_stream_ssl_module.c
|
|
||||||
@@ -17,6 +17,8 @@ typedef ngx_int_t (*ngx_ssl_variable_handler_pt)(ngx_connection_t *c,
|
|
||||||
#define NGX_DEFAULT_CIPHERS "HIGH:!aNULL:!MD5"
|
|
||||||
#define NGX_DEFAULT_ECDH_CURVE "auto"
|
|
||||||
|
|
||||||
+#define NGX_SSL_STREAM_NAME "NGX_STREAM_SSL_MODULE"
|
|
||||||
+static ngx_str_t ngx_ssl_stream_default_name = ngx_string(NGX_SSL_STREAM_NAME);
|
|
||||||
|
|
||||||
static ngx_int_t ngx_stream_ssl_handler(ngx_stream_session_t *s);
|
|
||||||
static ngx_int_t ngx_stream_ssl_init_connection(ngx_ssl_t *ssl,
|
|
||||||
@@ -57,6 +59,9 @@ static char *ngx_stream_ssl_alpn(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
||||||
static char *ngx_stream_ssl_conf_command_check(ngx_conf_t *cf, void *post,
|
|
||||||
void *data);
|
|
||||||
|
|
||||||
+static char *ngx_conf_set_pass_phrase_dialog(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
||||||
+ void *conf);
|
|
||||||
+
|
|
||||||
static ngx_int_t ngx_stream_ssl_init(ngx_conf_t *cf);
|
|
||||||
|
|
||||||
|
|
||||||
@@ -226,6 +231,13 @@ static ngx_command_t ngx_stream_ssl_commands[] = {
|
|
||||||
0,
|
|
||||||
NULL },
|
|
||||||
|
|
||||||
+ { ngx_string("ssl_pass_phrase_dialog"),
|
|
||||||
+ NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
|
|
||||||
+ ngx_conf_set_pass_phrase_dialog,
|
|
||||||
+ NGX_STREAM_SRV_CONF_OFFSET,
|
|
||||||
+ offsetof(ngx_stream_ssl_conf_t, pass_phrase_dialog),
|
|
||||||
+ NULL },
|
|
||||||
+
|
|
||||||
ngx_null_command
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -690,6 +702,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
{
|
|
||||||
ngx_stream_ssl_conf_t *prev = parent;
|
|
||||||
ngx_stream_ssl_conf_t *conf = child;
|
|
||||||
+ ngx_ssl_ppdialog_conf_t dlg;
|
|
||||||
|
|
||||||
ngx_pool_cleanup_t *cln;
|
|
||||||
|
|
||||||
@@ -730,6 +743,8 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
|
|
||||||
ngx_conf_merge_ptr_value(conf->conf_commands, prev->conf_commands, NULL);
|
|
||||||
|
|
||||||
+ ngx_conf_merge_str_value(conf->pass_phrase_dialog,
|
|
||||||
+ prev->pass_phrase_dialog, NGX_SSL_PASS_PHRASE_DEFAULT_VAL);
|
|
||||||
|
|
||||||
conf->ssl.log = cf->log;
|
|
||||||
|
|
||||||
@@ -777,6 +792,23 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
cln->handler = ngx_ssl_cleanup_ctx;
|
|
||||||
cln->data = &conf->ssl;
|
|
||||||
|
|
||||||
+ /** directive format: ssl_pass_phrase_dialog buildin|exec:filepath */
|
|
||||||
+ if (ngx_strncasecmp(conf->pass_phrase_dialog.data, (u_char *)"exec:", 5) == 0){
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog config directive SET: %s ", conf->pass_phrase_dialog.data);
|
|
||||||
+ } else if (ngx_strncasecmp(conf->pass_phrase_dialog.data, (u_char *)NGX_SSL_PASS_PHRASE_DEFAULT_VAL,
|
|
||||||
+ sizeof(NGX_SSL_PASS_PHRASE_DEFAULT_VAL)) != 0){
|
|
||||||
+
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog config directive accepts only the following "
|
|
||||||
+ "values: %s | exec:filepath", NGX_SSL_PASS_PHRASE_DEFAULT_VAL);
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ dlg.data = &conf->pass_phrase_dialog;
|
|
||||||
+ dlg.server = &ngx_ssl_stream_default_name;
|
|
||||||
+
|
|
||||||
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
|
|
||||||
SSL_CTX_set_tlsext_servername_callback(conf->ssl.ctx,
|
|
||||||
ngx_stream_ssl_servername);
|
|
||||||
@@ -821,7 +853,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|
||||||
/* configure certificates */
|
|
||||||
|
|
||||||
if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates,
|
|
||||||
- conf->certificate_keys, conf->passwords)
|
|
||||||
+ conf->certificate_keys, conf->passwords, &dlg)
|
|
||||||
!= NGX_OK)
|
|
||||||
{
|
|
||||||
return NGX_CONF_ERROR;
|
|
||||||
@@ -1207,3 +1239,31 @@ ngx_stream_ssl_init(ngx_conf_t *cf)
|
|
||||||
|
|
||||||
return NGX_OK;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
+ngx_conf_set_pass_phrase_dialog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
||||||
+{
|
|
||||||
+ ngx_stream_ssl_conf_t *sscf = conf;
|
|
||||||
+ ngx_str_t *value;
|
|
||||||
+
|
|
||||||
+ if (sscf->pass_phrase_dialog.data){
|
|
||||||
+ return "is duplicate";
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ value = cf->args->elts;
|
|
||||||
+
|
|
||||||
+ sscf->pass_phrase_dialog = value[1];
|
|
||||||
+
|
|
||||||
+ if (sscf->pass_phrase_dialog.len == 0) {
|
|
||||||
+ return NGX_CONF_OK;
|
|
||||||
+ } else if (sscf->pass_phrase_dialog.len > NGX_SSL_PASS_PHRASE_ARG_MAX_LEN) {
|
|
||||||
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
|
||||||
+ "ssl_pass_phrase_dialog argument length exceeded maximum possible length: %d",
|
|
||||||
+ NGX_SSL_PASS_PHRASE_ARG_MAX_LEN);
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_ERROR;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return NGX_CONF_OK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
diff --git a/src/stream/ngx_stream_ssl_module.h b/src/stream/ngx_stream_ssl_module.h
|
|
||||||
index e7c825e..d80daa4 100644
|
|
||||||
--- a/src/stream/ngx_stream_ssl_module.h
|
|
||||||
+++ b/src/stream/ngx_stream_ssl_module.h
|
|
||||||
@@ -56,6 +56,8 @@ typedef struct {
|
|
||||||
|
|
||||||
u_char *file;
|
|
||||||
ngx_uint_t line;
|
|
||||||
+
|
|
||||||
+ ngx_str_t pass_phrase_dialog;
|
|
||||||
} ngx_stream_ssl_conf_t;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
2.44.0
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
|||||||
From b6aa9504cdfb6391d895dcbddc87b9260ea6968c Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Wed, 11 Oct 2023 09:59:23 +0200
|
|
||||||
Subject: [PATCH] CVE-2023-44487 - HTTP/2: per-iteration stream handling limit.
|
|
||||||
|
|
||||||
To ensure that attempts to flood servers with many streams are detected
|
|
||||||
early, a limit of no more than 2 * max_concurrent_streams new streams per one
|
|
||||||
event loop iteration was introduced. This limit is applied even if
|
|
||||||
max_concurrent_streams is not yet reached - for example, if corresponding
|
|
||||||
streams are handled synchronously or reset.
|
|
||||||
|
|
||||||
Further, refused streams are now limited to maximum of max_concurrent_streams
|
|
||||||
and 100, similarly to priority_limit initial value, providing some tolerance
|
|
||||||
to clients trying to open several streams at the connection start, yet
|
|
||||||
low tolerance to flooding attempts.
|
|
||||||
---
|
|
||||||
src/http/v2/ngx_http_v2.c | 15 +++++++++++++++
|
|
||||||
src/http/v2/ngx_http_v2.h | 2 ++
|
|
||||||
2 files changed, 17 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/http/v2/ngx_http_v2.c b/src/http/v2/ngx_http_v2.c
|
|
||||||
index 3611a2e..291677a 100644
|
|
||||||
--- a/src/http/v2/ngx_http_v2.c
|
|
||||||
+++ b/src/http/v2/ngx_http_v2.c
|
|
||||||
@@ -361,6 +361,7 @@ ngx_http_v2_read_handler(ngx_event_t *rev)
|
|
||||||
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "http2 read handler");
|
|
||||||
|
|
||||||
h2c->blocked = 1;
|
|
||||||
+ h2c->new_streams = 0;
|
|
||||||
|
|
||||||
if (c->close) {
|
|
||||||
c->close = 0;
|
|
||||||
@@ -1320,6 +1321,14 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos,
|
|
||||||
goto rst_stream;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (h2c->new_streams++ >= 2 * h2scf->concurrent_streams) {
|
|
||||||
+ ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0,
|
|
||||||
+ "client sent too many streams at once");
|
|
||||||
+
|
|
||||||
+ status = NGX_HTTP_V2_REFUSED_STREAM;
|
|
||||||
+ goto rst_stream;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (!h2c->settings_ack
|
|
||||||
&& !(h2c->state.flags & NGX_HTTP_V2_END_STREAM_FLAG)
|
|
||||||
&& h2scf->preread_size < NGX_HTTP_V2_DEFAULT_WINDOW)
|
|
||||||
@@ -1385,6 +1394,12 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos,
|
|
||||||
|
|
||||||
rst_stream:
|
|
||||||
|
|
||||||
+ if (h2c->refused_streams++ > ngx_max(h2scf->concurrent_streams, 100)) {
|
|
||||||
+ ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0,
|
|
||||||
+ "client sent too many refused streams");
|
|
||||||
+ return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_NO_ERROR);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (ngx_http_v2_send_rst_stream(h2c, h2c->state.sid, status) != NGX_OK) {
|
|
||||||
return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR);
|
|
||||||
}
|
|
||||||
diff --git a/src/http/v2/ngx_http_v2.h b/src/http/v2/ngx_http_v2.h
|
|
||||||
index 3492297..6a7aaa6 100644
|
|
||||||
--- a/src/http/v2/ngx_http_v2.h
|
|
||||||
+++ b/src/http/v2/ngx_http_v2.h
|
|
||||||
@@ -125,6 +125,8 @@ struct ngx_http_v2_connection_s {
|
|
||||||
ngx_uint_t processing;
|
|
||||||
ngx_uint_t frames;
|
|
||||||
ngx_uint_t idle;
|
|
||||||
+ ngx_uint_t new_streams;
|
|
||||||
+ ngx_uint_t refused_streams;
|
|
||||||
ngx_uint_t priority_limit;
|
|
||||||
|
|
||||||
ngx_uint_t pushing;
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
|||||||
From e0e6437b1f1c723a52ac26a7e700113753331ecd Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Thu, 13 Jun 2024 17:44:28 +0200
|
|
||||||
Subject: [PATCH] defer ENGINE_finish() calls to a cleanup
|
|
||||||
|
|
||||||
---
|
|
||||||
src/event/ngx_event_openssl.c | 51 +++++++++++++++++++++++++++--------
|
|
||||||
1 file changed, 40 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
|
||||||
index fb05ab9..3e06791 100644
|
|
||||||
--- a/src/event/ngx_event_openssl.c
|
|
||||||
+++ b/src/event/ngx_event_openssl.c
|
|
||||||
@@ -16,7 +16,7 @@ typedef struct {
|
|
||||||
ngx_uint_t engine; /* unsigned engine:1; */
|
|
||||||
} ngx_openssl_conf_t;
|
|
||||||
|
|
||||||
-
|
|
||||||
+static ngx_int_t ngx_ssl_engine_cleanup(void *data);
|
|
||||||
static X509 *ngx_ssl_load_certificate(ngx_pool_t *pool, char **err,
|
|
||||||
ngx_str_t *cert, STACK_OF(X509) **chain);
|
|
||||||
static EVP_PKEY *ngx_ssl_load_certificate_key(ngx_pool_t *pool,
|
|
||||||
@@ -144,6 +144,15 @@ int ngx_ssl_certificate_name_index;
|
|
||||||
int ngx_ssl_stapling_index;
|
|
||||||
|
|
||||||
|
|
||||||
+static ngx_int_t
|
|
||||||
+ngx_ssl_engine_cleanup(void *data){
|
|
||||||
+ ENGINE *e = data;
|
|
||||||
+
|
|
||||||
+ ENGINE_finish(e);
|
|
||||||
+
|
|
||||||
+ return NGX_OK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
ngx_int_t
|
|
||||||
ngx_ssl_init(ngx_log_t *log)
|
|
||||||
{
|
|
||||||
@@ -650,8 +659,9 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
|
|
||||||
|
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
|
||||||
|
|
||||||
- u_char *p, *last;
|
|
||||||
- ENGINE *engine;
|
|
||||||
+ u_char *p, *last;
|
|
||||||
+ ENGINE *engine;
|
|
||||||
+ ngx_pool_cleanup_t *cln;
|
|
||||||
|
|
||||||
p = cert->data + sizeof("engine:") - 1;
|
|
||||||
last = (u_char *) ngx_strchr(p, ':');
|
|
||||||
@@ -676,6 +686,16 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ cln = ngx_pool_cleanup_add(pool, 0);
|
|
||||||
+ if (cln == NULL) {
|
|
||||||
+ *err = "failed to add ENGINE cleanup";
|
|
||||||
+ ENGINE_free(engine);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cln->handler = ngx_ssl_engine_cleanup;
|
|
||||||
+ cln->data = engine;
|
|
||||||
+
|
|
||||||
*last++ = ':';
|
|
||||||
|
|
||||||
struct {
|
|
||||||
@@ -689,7 +709,6 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ENGINE_finish(engine);
|
|
||||||
ENGINE_free(engine);
|
|
||||||
|
|
||||||
/* set chain to null */
|
|
||||||
@@ -868,11 +887,13 @@ ngx_ssl_pass_phrase_callback(char *buf, int bufsize, int rwflag, void *u)
|
|
||||||
static EVP_PKEY *
|
|
||||||
ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err, ngx_str_t *key, ngx_array_t *passwords, ngx_ssl_ppdialog_conf_t *dlg)
|
|
||||||
{
|
|
||||||
- BIO *bio;
|
|
||||||
- EVP_PKEY *pkey;
|
|
||||||
- ngx_str_t *pwd;
|
|
||||||
- ngx_uint_t tries;
|
|
||||||
- pem_password_cb *cb;
|
|
||||||
+ BIO *bio;
|
|
||||||
+ EVP_PKEY *pkey;
|
|
||||||
+ ngx_str_t *pwd;
|
|
||||||
+ ngx_uint_t tries;
|
|
||||||
+ pem_password_cb *cb;
|
|
||||||
+ ngx_pool_cleanup_t *cln;
|
|
||||||
+
|
|
||||||
|
|
||||||
if (ngx_strncmp(key->data, "engine:", sizeof("engine:") - 1) == 0) {
|
|
||||||
|
|
||||||
@@ -904,18 +925,26 @@ ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err, ngx_str_t *key, ngx_a
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ cln = ngx_pool_cleanup_add(pool, 0);
|
|
||||||
+ if (cln == NULL) {
|
|
||||||
+ *err = "failed to add ENGINE cleanup";
|
|
||||||
+ ENGINE_free(engine);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cln->handler = ngx_ssl_engine_cleanup;
|
|
||||||
+ cln->data = engine;
|
|
||||||
+
|
|
||||||
*last++ = ':';
|
|
||||||
|
|
||||||
pkey = ENGINE_load_private_key(engine, (char *) last, 0, 0);
|
|
||||||
|
|
||||||
if (pkey == NULL) {
|
|
||||||
*err = "ENGINE_load_private_key() failed";
|
|
||||||
- ENGINE_finish(engine);
|
|
||||||
ENGINE_free(engine);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ENGINE_finish(engine);
|
|
||||||
ENGINE_free(engine);
|
|
||||||
|
|
||||||
return pkey;
|
|
||||||
--
|
|
||||||
2.44.0
|
|
||||||
|
|
@ -1,183 +0,0 @@
|
|||||||
From f3bcc0bcfb6eda3f4874fe2531d546ba724c518c Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Wed, 12 Jun 2024 12:49:28 +0200
|
|
||||||
Subject: [PATCH] Optimized chain link usage
|
|
||||||
|
|
||||||
Previously chain links could sometimes be dropped instead of being reused,
|
|
||||||
which could result in increased memory consumption during long requests.
|
|
||||||
---
|
|
||||||
src/core/ngx_output_chain.c | 10 ++++++++--
|
|
||||||
src/http/modules/ngx_http_grpc_module.c | 5 ++++-
|
|
||||||
.../modules/ngx_http_gunzip_filter_module.c | 18 ++++++++++++++----
|
|
||||||
src/http/modules/ngx_http_gzip_filter_module.c | 10 +++++++---
|
|
||||||
src/http/modules/ngx_http_ssi_filter_module.c | 8 ++++++--
|
|
||||||
src/http/modules/ngx_http_sub_filter_module.c | 8 ++++++--
|
|
||||||
6 files changed, 45 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c
|
|
||||||
index 5c3dbe8..4aa1b02 100644
|
|
||||||
--- a/src/core/ngx_output_chain.c
|
|
||||||
+++ b/src/core/ngx_output_chain.c
|
|
||||||
@@ -121,7 +121,10 @@ ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in)
|
|
||||||
|
|
||||||
ngx_debug_point();
|
|
||||||
|
|
||||||
- ctx->in = ctx->in->next;
|
|
||||||
+ cl = ctx->in;
|
|
||||||
+ ctx->in = cl->next;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(ctx->pool, cl);
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
@@ -207,7 +210,10 @@ ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in)
|
|
||||||
/* delete the completed buf from the ctx->in chain */
|
|
||||||
|
|
||||||
if (ngx_buf_size(ctx->in->buf) == 0) {
|
|
||||||
- ctx->in = ctx->in->next;
|
|
||||||
+ cl = ctx->in;
|
|
||||||
+ ctx->in = cl->next;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(ctx->pool, cl);
|
|
||||||
}
|
|
||||||
|
|
||||||
cl = ngx_alloc_chain_link(ctx->pool);
|
|
||||||
diff --git a/src/http/modules/ngx_http_grpc_module.c b/src/http/modules/ngx_http_grpc_module.c
|
|
||||||
index 53bc547..9f13089 100644
|
|
||||||
--- a/src/http/modules/ngx_http_grpc_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_grpc_module.c
|
|
||||||
@@ -1230,7 +1230,7 @@ ngx_http_grpc_body_output_filter(void *data, ngx_chain_t *in)
|
|
||||||
ngx_buf_t *b;
|
|
||||||
ngx_int_t rc;
|
|
||||||
ngx_uint_t next, last;
|
|
||||||
- ngx_chain_t *cl, *out, **ll;
|
|
||||||
+ ngx_chain_t *cl, *out, *ln, **ll;
|
|
||||||
ngx_http_upstream_t *u;
|
|
||||||
ngx_http_grpc_ctx_t *ctx;
|
|
||||||
ngx_http_grpc_frame_t *f;
|
|
||||||
@@ -1458,7 +1458,10 @@ ngx_http_grpc_body_output_filter(void *data, ngx_chain_t *in)
|
|
||||||
last = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ ln = in;
|
|
||||||
in = in->next;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(r->pool, ln);
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx->in = in;
|
|
||||||
diff --git a/src/http/modules/ngx_http_gunzip_filter_module.c b/src/http/modules/ngx_http_gunzip_filter_module.c
|
|
||||||
index c1341f5..5d170a1 100644
|
|
||||||
--- a/src/http/modules/ngx_http_gunzip_filter_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_gunzip_filter_module.c
|
|
||||||
@@ -333,6 +333,8 @@ static ngx_int_t
|
|
||||||
ngx_http_gunzip_filter_add_data(ngx_http_request_t *r,
|
|
||||||
ngx_http_gunzip_ctx_t *ctx)
|
|
||||||
{
|
|
||||||
+ ngx_chain_t *cl;
|
|
||||||
+
|
|
||||||
if (ctx->zstream.avail_in || ctx->flush != Z_NO_FLUSH || ctx->redo) {
|
|
||||||
return NGX_OK;
|
|
||||||
}
|
|
||||||
@@ -344,8 +346,11 @@ ngx_http_gunzip_filter_add_data(ngx_http_request_t *r,
|
|
||||||
return NGX_DECLINED;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ctx->in_buf = ctx->in->buf;
|
|
||||||
- ctx->in = ctx->in->next;
|
|
||||||
+ cl = ctx->in;
|
|
||||||
+ ctx->in_buf = cl->buf;
|
|
||||||
+ ctx->in = cl->next;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(r->pool, cl);
|
|
||||||
|
|
||||||
ctx->zstream.next_in = ctx->in_buf->pos;
|
|
||||||
ctx->zstream.avail_in = ctx->in_buf->last - ctx->in_buf->pos;
|
|
||||||
@@ -374,6 +379,7 @@ static ngx_int_t
|
|
||||||
ngx_http_gunzip_filter_get_buf(ngx_http_request_t *r,
|
|
||||||
ngx_http_gunzip_ctx_t *ctx)
|
|
||||||
{
|
|
||||||
+ ngx_chain_t *cl;
|
|
||||||
ngx_http_gunzip_conf_t *conf;
|
|
||||||
|
|
||||||
if (ctx->zstream.avail_out) {
|
|
||||||
@@ -383,8 +389,12 @@ ngx_http_gunzip_filter_get_buf(ngx_http_request_t *r,
|
|
||||||
conf = ngx_http_get_module_loc_conf(r, ngx_http_gunzip_filter_module);
|
|
||||||
|
|
||||||
if (ctx->free) {
|
|
||||||
- ctx->out_buf = ctx->free->buf;
|
|
||||||
- ctx->free = ctx->free->next;
|
|
||||||
+
|
|
||||||
+ cl = ctx->free;
|
|
||||||
+ ctx->out_buf = cl->buf;
|
|
||||||
+ ctx->free = cl->next;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(r->pool, cl);
|
|
||||||
|
|
||||||
ctx->out_buf->flush = 0;
|
|
||||||
|
|
||||||
diff --git a/src/http/modules/ngx_http_gzip_filter_module.c b/src/http/modules/ngx_http_gzip_filter_module.c
|
|
||||||
index b8c5ccc..1d17a6d 100644
|
|
||||||
--- a/src/http/modules/ngx_http_gzip_filter_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_gzip_filter_module.c
|
|
||||||
@@ -978,10 +978,14 @@ static void
|
|
||||||
ngx_http_gzip_filter_free_copy_buf(ngx_http_request_t *r,
|
|
||||||
ngx_http_gzip_ctx_t *ctx)
|
|
||||||
{
|
|
||||||
- ngx_chain_t *cl;
|
|
||||||
+ ngx_chain_t *cl, *ln;
|
|
||||||
+
|
|
||||||
+ for (cl = ctx->copied; cl; /* void */) {
|
|
||||||
+ ln = cl;
|
|
||||||
+ cl = cl->next;
|
|
||||||
|
|
||||||
- for (cl = ctx->copied; cl; cl = cl->next) {
|
|
||||||
- ngx_pfree(r->pool, cl->buf->start);
|
|
||||||
+ ngx_pfree(r->pool, ln->buf->start);
|
|
||||||
+ ngx_free_chain(r->pool, ln);
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx->copied = NULL;
|
|
||||||
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
|
|
||||||
index 6737965..a55f6e5 100644
|
|
||||||
--- a/src/http/modules/ngx_http_ssi_filter_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
|
|
||||||
@@ -455,9 +455,13 @@ ngx_http_ssi_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
|
||||||
while (ctx->in || ctx->buf) {
|
|
||||||
|
|
||||||
if (ctx->buf == NULL) {
|
|
||||||
- ctx->buf = ctx->in->buf;
|
|
||||||
- ctx->in = ctx->in->next;
|
|
||||||
+
|
|
||||||
+ cl = ctx->in;
|
|
||||||
+ ctx->buf = cl->buf;
|
|
||||||
+ ctx->in = cl->next;
|
|
||||||
ctx->pos = ctx->buf->pos;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(r->pool, cl);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx->state == ssi_start_state) {
|
|
||||||
diff --git a/src/http/modules/ngx_http_sub_filter_module.c b/src/http/modules/ngx_http_sub_filter_module.c
|
|
||||||
index 6d3de59..456bb27 100644
|
|
||||||
--- a/src/http/modules/ngx_http_sub_filter_module.c
|
|
||||||
+++ b/src/http/modules/ngx_http_sub_filter_module.c
|
|
||||||
@@ -335,9 +335,13 @@ ngx_http_sub_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
|
||||||
while (ctx->in || ctx->buf) {
|
|
||||||
|
|
||||||
if (ctx->buf == NULL) {
|
|
||||||
- ctx->buf = ctx->in->buf;
|
|
||||||
- ctx->in = ctx->in->next;
|
|
||||||
+
|
|
||||||
+ cl = ctx->in;
|
|
||||||
+ ctx->buf = cl->buf;
|
|
||||||
+ ctx->in = cl->next;
|
|
||||||
ctx->pos = ctx->buf->pos;
|
|
||||||
+
|
|
||||||
+ ngx_free_chain(r->pool, cl);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx->buf->flush || ctx->buf->recycled) {
|
|
||||||
--
|
|
||||||
2.44.0
|
|
||||||
|
|
@ -16,5 +16,5 @@ Prevent dynamic modules from being enabled automatically
|
|||||||
You may want to avoid dynamic modules being enabled automatically. Simply
|
You may want to avoid dynamic modules being enabled automatically. Simply
|
||||||
remove this line from the top of /etc/nginx/nginx.conf:
|
remove this line from the top of /etc/nginx/nginx.conf:
|
||||||
|
|
||||||
include /usr/share/nginx/modules/*.conf;
|
include /usr/lib64/nginx/modules/*.conf;
|
||||||
|
|
117
SOURCES/index.html
Normal file
117
SOURCES/index.html
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||||
|
<head>
|
||||||
|
<title>Test Page for the Nginx HTTP Server on Red Hat Enterprise Linux</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<style type="text/css">
|
||||||
|
/*<![CDATA[*/
|
||||||
|
body {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #000;
|
||||||
|
font-size: 0.9em;
|
||||||
|
font-family: sans-serif,helvetica;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
:link {
|
||||||
|
color: #c00;
|
||||||
|
}
|
||||||
|
:visited {
|
||||||
|
color: #c00;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #f50;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.6em 2em 0.4em;
|
||||||
|
background-color: #900;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 1.75em;
|
||||||
|
border-bottom: 2px solid #000;
|
||||||
|
}
|
||||||
|
h1 strong {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
background-color: #900;
|
||||||
|
font-size: 1.1em;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #fff;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
border-bottom: 2px solid #000;
|
||||||
|
}
|
||||||
|
hr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
padding: 1em 5em;
|
||||||
|
}
|
||||||
|
.alert {
|
||||||
|
border: 2px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 2px solid #fff;
|
||||||
|
padding: 2px;
|
||||||
|
margin: 2px;
|
||||||
|
}
|
||||||
|
a:hover img {
|
||||||
|
border: 2px solid #294172;
|
||||||
|
}
|
||||||
|
.logos {
|
||||||
|
margin: 1em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
/*]]>*/
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Welcome to <strong>nginx</strong> on Red Hat Enterprise Linux!</h1>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p>This page is used to test the proper operation of the
|
||||||
|
<strong>nginx</strong> HTTP server after it has been
|
||||||
|
installed. If you can read this page, it means that the
|
||||||
|
web server installed at this site is working
|
||||||
|
properly.</p>
|
||||||
|
|
||||||
|
<div class="alert">
|
||||||
|
<h2>Website Administrator</h2>
|
||||||
|
<div class="content">
|
||||||
|
<p>This is the default <tt>index.html</tt> page that
|
||||||
|
is distributed with <strong>nginx</strong> on
|
||||||
|
Red Hat Enterprise Linux. It is located in
|
||||||
|
<tt>/usr/share/nginx/html</tt>.</p>
|
||||||
|
|
||||||
|
<p>You should now put your content in a location of
|
||||||
|
your choice and edit the <tt>root</tt> configuration
|
||||||
|
directive in the <strong>nginx</strong>
|
||||||
|
configuration file
|
||||||
|
<tt>/etc/nginx/nginx.conf</tt>.</p>
|
||||||
|
|
||||||
|
<p>For information on Red Hat Enterprise Linux, please visit the <a href="http://www.redhat.com/">Red Hat, Inc. website</a>. The documentation for Red Hat Enterprise Linux is <a href="http://www.redhat.com/docs/manuals/enterprise/">available on the Red Hat, Inc. website</a>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="logos">
|
||||||
|
<a href="http://nginx.net/"><img
|
||||||
|
src="nginx-logo.png"
|
||||||
|
alt="[ Powered by nginx ]"
|
||||||
|
width="121" height="32" /></a>
|
||||||
|
<a href="http://www.redhat.com/"><img
|
||||||
|
src="poweredby.png"
|
||||||
|
alt="[ Powered by Red Hat Enterprise Linux ]"
|
||||||
|
width="88" height="31" /></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
13
SOURCES/nginx-1.14.0-logs-perm.patch
Normal file
13
SOURCES/nginx-1.14.0-logs-perm.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
|
||||||
|
index aee7a58..bcceecb 100644
|
||||||
|
--- a/src/core/ngx_cycle.c
|
||||||
|
+++ b/src/core/ngx_cycle.c
|
||||||
|
@@ -1108,7 +1108,7 @@ ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
|
||||||
|
}
|
||||||
|
|
||||||
|
fd = ngx_open_file(file[i].name.data, NGX_FILE_APPEND,
|
||||||
|
- NGX_FILE_CREATE_OR_OPEN, NGX_FILE_DEFAULT_ACCESS);
|
||||||
|
+ NGX_FILE_CREATE_OR_OPEN, NGX_FILE_DEFAULT_ACCESS | 0220);
|
||||||
|
|
||||||
|
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
|
||||||
|
"reopen file \"%s\", old:%d new:%d",
|
@ -1,13 +1,3 @@
|
|||||||
From 80c0ee172cceaef933ff5a451ec2a16213e03996 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Wed, 22 Sep 2021 15:55:39 +0200
|
|
||||||
Subject: [PATCH] Set proper compiler optimalization level (O2) for perl
|
|
||||||
module.
|
|
||||||
|
|
||||||
---
|
|
||||||
src/http/modules/perl/Makefile.PL | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/http/modules/perl/Makefile.PL b/src/http/modules/perl/Makefile.PL
|
diff --git a/src/http/modules/perl/Makefile.PL b/src/http/modules/perl/Makefile.PL
|
||||||
index 7edadcb..2ebb7c4 100644
|
index 7edadcb..2ebb7c4 100644
|
||||||
--- a/src/http/modules/perl/Makefile.PL
|
--- a/src/http/modules/perl/Makefile.PL
|
||||||
@ -21,6 +11,3 @@ index 7edadcb..2ebb7c4 100644
|
|||||||
|
|
||||||
LDDLFLAGS => "$ENV{NGX_PM_LDFLAGS}",
|
LDDLFLAGS => "$ENV{NGX_PM_LDFLAGS}",
|
||||||
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,21 +1,8 @@
|
|||||||
From cc7b92c61a2833ff9dc2b4dfba4591966769da78 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Tue, 21 Jun 2022 13:55:04 +0200
|
|
||||||
Subject: [PATCH] Enable TLSv1.3 by default in nginx
|
|
||||||
|
|
||||||
---
|
|
||||||
src/event/ngx_event_openssl.c | 77 ++++++++++++++------------
|
|
||||||
src/event/ngx_event_openssl.h | 1 +
|
|
||||||
src/http/modules/ngx_http_ssl_module.c | 3 +-
|
|
||||||
src/mail/ngx_mail_ssl_module.c | 3 +-
|
|
||||||
src/stream/ngx_stream_ssl_module.c | 3 +-
|
|
||||||
5 files changed, 46 insertions(+), 41 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
||||||
index f813458..2e6a6c0 100644
|
index 345914f..d23967f 100644
|
||||||
--- a/src/event/ngx_event_openssl.c
|
--- a/src/event/ngx_event_openssl.c
|
||||||
+++ b/src/event/ngx_event_openssl.c
|
+++ b/src/event/ngx_event_openssl.c
|
||||||
@@ -258,6 +258,8 @@ ngx_ssl_init(ngx_log_t *log)
|
@@ -252,6 +252,8 @@ ngx_ssl_init(ngx_log_t *log)
|
||||||
ngx_int_t
|
ngx_int_t
|
||||||
ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
|
ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
|
||||||
{
|
{
|
||||||
@ -24,7 +11,7 @@ index f813458..2e6a6c0 100644
|
|||||||
ssl->ctx = SSL_CTX_new(SSLv23_method());
|
ssl->ctx = SSL_CTX_new(SSLv23_method());
|
||||||
|
|
||||||
if (ssl->ctx == NULL) {
|
if (ssl->ctx == NULL) {
|
||||||
@@ -322,49 +324,54 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
|
@@ -316,49 +318,54 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
|
||||||
|
|
||||||
SSL_CTX_set_options(ssl->ctx, SSL_OP_SINGLE_DH_USE);
|
SSL_CTX_set_options(ssl->ctx, SSL_OP_SINGLE_DH_USE);
|
||||||
|
|
||||||
@ -90,7 +77,7 @@ index f813458..2e6a6c0 100644
|
|||||||
+
|
+
|
||||||
+ /* Now, we have to scan for minimal protocol version,
|
+ /* Now, we have to scan for minimal protocol version,
|
||||||
+ *without allowing holes between min and max*/
|
+ *without allowing holes between min and max*/
|
||||||
+#ifdef SSL_OP_NO_TLSv1_3
|
+#if SSL_OP_NO_TLSv1_3
|
||||||
+ if ((prot == TLS1_3_VERSION) && (protocols & NGX_SSL_TLSv1_2)) {
|
+ if ((prot == TLS1_3_VERSION) && (protocols & NGX_SSL_TLSv1_2)) {
|
||||||
+ prot = TLS1_2_VERSION;
|
+ prot = TLS1_2_VERSION;
|
||||||
+ }
|
+ }
|
||||||
@ -115,10 +102,10 @@ index f813458..2e6a6c0 100644
|
|||||||
#ifdef SSL_OP_NO_COMPRESSION
|
#ifdef SSL_OP_NO_COMPRESSION
|
||||||
SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION);
|
SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION);
|
||||||
diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h
|
diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h
|
||||||
index 329760d..5cee113 100644
|
index 61da0c5..fa7ac41 100644
|
||||||
--- a/src/event/ngx_event_openssl.h
|
--- a/src/event/ngx_event_openssl.h
|
||||||
+++ b/src/event/ngx_event_openssl.h
|
+++ b/src/event/ngx_event_openssl.h
|
||||||
@@ -152,6 +152,7 @@ typedef struct {
|
@@ -145,6 +145,7 @@ typedef struct {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -127,11 +114,11 @@ index 329760d..5cee113 100644
|
|||||||
#define NGX_SSL_SSLv3 0x0004
|
#define NGX_SSL_SSLv3 0x0004
|
||||||
#define NGX_SSL_TLSv1 0x0008
|
#define NGX_SSL_TLSv1 0x0008
|
||||||
diff --git a/src/http/modules/ngx_http_ssl_module.c b/src/http/modules/ngx_http_ssl_module.c
|
diff --git a/src/http/modules/ngx_http_ssl_module.c b/src/http/modules/ngx_http_ssl_module.c
|
||||||
index a47d696..94f30db 100644
|
index b3f8f47..8340a12 100644
|
||||||
--- a/src/http/modules/ngx_http_ssl_module.c
|
--- a/src/http/modules/ngx_http_ssl_module.c
|
||||||
+++ b/src/http/modules/ngx_http_ssl_module.c
|
+++ b/src/http/modules/ngx_http_ssl_module.c
|
||||||
@@ -671,8 +671,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
|
@@ -613,8 +613,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||||
ngx_conf_merge_value(conf->reject_handshake, prev->reject_handshake, 0);
|
ngx_conf_merge_value(conf->early_data, prev->early_data, 0);
|
||||||
|
|
||||||
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
|
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
|
||||||
- (NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1
|
- (NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1
|
||||||
@ -141,10 +128,10 @@ index a47d696..94f30db 100644
|
|||||||
ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size,
|
ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size,
|
||||||
NGX_SSL_BUFSIZE);
|
NGX_SSL_BUFSIZE);
|
||||||
diff --git a/src/mail/ngx_mail_ssl_module.c b/src/mail/ngx_mail_ssl_module.c
|
diff --git a/src/mail/ngx_mail_ssl_module.c b/src/mail/ngx_mail_ssl_module.c
|
||||||
index 7eae83e..8328560 100644
|
index 5544f75..3316a4b 100644
|
||||||
--- a/src/mail/ngx_mail_ssl_module.c
|
--- a/src/mail/ngx_mail_ssl_module.c
|
||||||
+++ b/src/mail/ngx_mail_ssl_module.c
|
+++ b/src/mail/ngx_mail_ssl_module.c
|
||||||
@@ -306,8 +306,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
@@ -291,8 +291,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||||
prev->prefer_server_ciphers, 0);
|
prev->prefer_server_ciphers, 0);
|
||||||
|
|
||||||
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
|
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
|
||||||
@ -155,10 +142,10 @@ index 7eae83e..8328560 100644
|
|||||||
ngx_conf_merge_uint_value(conf->verify, prev->verify, 0);
|
ngx_conf_merge_uint_value(conf->verify, prev->verify, 0);
|
||||||
ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1);
|
ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1);
|
||||||
diff --git a/src/stream/ngx_stream_ssl_module.c b/src/stream/ngx_stream_ssl_module.c
|
diff --git a/src/stream/ngx_stream_ssl_module.c b/src/stream/ngx_stream_ssl_module.c
|
||||||
index d8c0471..cef590d 100644
|
index ec9524e..37af046 100644
|
||||||
--- a/src/stream/ngx_stream_ssl_module.c
|
--- a/src/stream/ngx_stream_ssl_module.c
|
||||||
+++ b/src/stream/ngx_stream_ssl_module.c
|
+++ b/src/stream/ngx_stream_ssl_module.c
|
||||||
@@ -641,8 +641,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
@@ -625,8 +625,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||||
prev->prefer_server_ciphers, 0);
|
prev->prefer_server_ciphers, 0);
|
||||||
|
|
||||||
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
|
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
|
||||||
@ -168,6 +155,3 @@ index d8c0471..cef590d 100644
|
|||||||
|
|
||||||
ngx_conf_merge_uint_value(conf->verify, prev->verify, 0);
|
ngx_conf_merge_uint_value(conf->verify, prev->verify, 0);
|
||||||
ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1);
|
ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1);
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,17 +1,8 @@
|
|||||||
From a769a35a6197c76390e1dd8f5054d426fbbbda05 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= <luhliari@redhat.com>
|
|
||||||
Date: Wed, 22 Sep 2021 16:12:58 +0200
|
|
||||||
Subject: [PATCH] Init openssl engine properly
|
|
||||||
|
|
||||||
---
|
|
||||||
src/event/ngx_event_openssl.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
|
||||||
index 270b200..f813458 100644
|
index 7be4fb4..ab3865a 100644
|
||||||
--- a/src/event/ngx_event_openssl.c
|
--- a/src/event/ngx_event_openssl.c
|
||||||
+++ b/src/event/ngx_event_openssl.c
|
+++ b/src/event/ngx_event_openssl.c
|
||||||
@@ -798,16 +798,24 @@ ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
@@ -727,16 +727,24 @@ ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,6 +27,3 @@ index 270b200..f813458 100644
|
|||||||
ENGINE_free(engine);
|
ENGINE_free(engine);
|
||||||
|
|
||||||
return pkey;
|
return pkey;
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
13
SOURCES/nginx-auto-cc-gcc.patch
Normal file
13
SOURCES/nginx-auto-cc-gcc.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--- auto/cc/gcc.orig 2007-03-22 08:34:53.000000000 -0600
|
||||||
|
+++ auto/cc/gcc 2007-03-22 08:58:47.000000000 -0600
|
||||||
|
@@ -172,7 +172,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
-CFLAGS="$CFLAGS -Werror"
|
||||||
|
+# This combined with Fedora's FORTIFY_SOURCE=2 option causes it nginx
|
||||||
|
+# to not compile.
|
||||||
|
+#CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 368 B |
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
user nginx;
|
user nginx;
|
||||||
worker_processes auto;
|
worker_processes auto;
|
||||||
error_log /var/log/nginx/error.log notice;
|
error_log /var/log/nginx/error.log;
|
||||||
pid /run/nginx.pid;
|
pid /run/nginx.pid;
|
||||||
|
|
||||||
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
|
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
|
||||||
@ -23,8 +23,9 @@ http {
|
|||||||
|
|
||||||
sendfile on;
|
sendfile on;
|
||||||
tcp_nopush on;
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
keepalive_timeout 65;
|
keepalive_timeout 65;
|
||||||
types_hash_max_size 4096;
|
types_hash_max_size 2048;
|
||||||
|
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
@ -35,16 +36,19 @@ http {
|
|||||||
include /etc/nginx/conf.d/*.conf;
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80 default_server;
|
||||||
listen [::]:80;
|
listen [::]:80 default_server;
|
||||||
server_name _;
|
server_name _;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
|
|
||||||
# Load configuration files for the default server block.
|
# Load configuration files for the default server block.
|
||||||
include /etc/nginx/default.d/*.conf;
|
include /etc/nginx/default.d/*.conf;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
}
|
||||||
|
|
||||||
error_page 404 /404.html;
|
error_page 404 /404.html;
|
||||||
location = /404.html {
|
location = /40x.html {
|
||||||
}
|
}
|
||||||
|
|
||||||
error_page 500 502 503 504 /50x.html;
|
error_page 500 502 503 504 /50x.html;
|
||||||
@ -55,8 +59,8 @@ http {
|
|||||||
# Settings for a TLS enabled server.
|
# Settings for a TLS enabled server.
|
||||||
#
|
#
|
||||||
# server {
|
# server {
|
||||||
# listen 443 ssl http2;
|
# listen 443 ssl http2 default_server;
|
||||||
# listen [::]:443 ssl http2;
|
# listen [::]:443 ssl http2 default_server;
|
||||||
# server_name _;
|
# server_name _;
|
||||||
# root /usr/share/nginx/html;
|
# root /usr/share/nginx/html;
|
||||||
#
|
#
|
||||||
@ -70,8 +74,11 @@ http {
|
|||||||
# # Load configuration files for the default server block.
|
# # Load configuration files for the default server block.
|
||||||
# include /etc/nginx/default.d/*.conf;
|
# include /etc/nginx/default.d/*.conf;
|
||||||
#
|
#
|
||||||
|
# location / {
|
||||||
|
# }
|
||||||
|
#
|
||||||
# error_page 404 /404.html;
|
# error_page 404 /404.html;
|
||||||
# location = /404.html {
|
# location = /40x.html {
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
# error_page 500 502 503 504 /50x.html;
|
# error_page 500 502 503 504 /50x.html;
|
@ -1,11 +1,10 @@
|
|||||||
/var/log/nginx/*.log {
|
/var/log/nginx/*log {
|
||||||
create 0640 nginx root
|
create 0664 nginx root
|
||||||
daily
|
daily
|
||||||
rotate 10
|
rotate 10
|
||||||
missingok
|
missingok
|
||||||
notifempty
|
notifempty
|
||||||
compress
|
compress
|
||||||
delaycompress
|
|
||||||
sharedscripts
|
sharedscripts
|
||||||
postrotate
|
postrotate
|
||||||
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
|
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
|
@ -1,7 +1,6 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=The nginx HTTP and reverse proxy server
|
Description=The nginx HTTP and reverse proxy server
|
||||||
After=network-online.target remote-fs.target nss-lookup.target
|
After=network.target remote-fs.target nss-lookup.target
|
||||||
Wants=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=forking
|
Type=forking
|
||||||
@ -12,7 +11,7 @@ PIDFile=/run/nginx.pid
|
|||||||
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
|
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
|
||||||
ExecStartPre=/usr/sbin/nginx -t
|
ExecStartPre=/usr/sbin/nginx -t
|
||||||
ExecStart=/usr/sbin/nginx
|
ExecStart=/usr/sbin/nginx
|
||||||
ExecReload=/usr/sbin/nginx -s reload
|
ExecReload=/bin/kill -s HUP $MAINPID
|
||||||
KillSignal=SIGQUIT
|
KillSignal=SIGQUIT
|
||||||
TimeoutStopSec=5
|
TimeoutStopSec=5
|
||||||
KillMode=mixed
|
KillMode=mixed
|
@ -5,20 +5,10 @@
|
|||||||
# See: https://src.fedoraproject.org/rpms/redhat-rpm-config/c/078af19
|
# See: https://src.fedoraproject.org/rpms/redhat-rpm-config/c/078af19
|
||||||
%undefine _strict_symbol_defs_build
|
%undefine _strict_symbol_defs_build
|
||||||
|
|
||||||
|
%global with_gperftools 0
|
||||||
|
|
||||||
%bcond_with geoip
|
%bcond_with geoip
|
||||||
|
|
||||||
# nginx gperftools support should be disabled for RHEL >= 8
|
|
||||||
# see: https://bugzilla.redhat.com/show_bug.cgi?id=1931402
|
|
||||||
%if 0%{?rhel} >= 8
|
|
||||||
%global with_gperftools 0
|
|
||||||
%else
|
|
||||||
# gperftools exists only on selected arches
|
|
||||||
# gperftools *detection* is failing on ppc64*, possibly only configure
|
|
||||||
# bug, but disable anyway.
|
|
||||||
%ifnarch s390 s390x ppc64 ppc64le
|
|
||||||
%global with_gperftools 1
|
|
||||||
%endif
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%global with_aio 1
|
%global with_aio 1
|
||||||
|
|
||||||
@ -26,59 +16,26 @@
|
|||||||
%global with_mailcap_mimetypes 1
|
%global with_mailcap_mimetypes 1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# kTLS requires OpenSSL 3.0 (default in F36+ and EL9+, available in EPEL8)
|
|
||||||
%if 0%{?fedora} >= 36 || 0%{?rhel} >= 8
|
|
||||||
%global with_ktls 1
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Build against OpenSSL 1.1 on EL7
|
|
||||||
%if 0%{?rhel} == 7
|
|
||||||
%global openssl_pkgversion 11
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Build against OpenSSL 3 on EL8
|
|
||||||
%if 0%{?rhel} == 8
|
|
||||||
%global openssl_pkgversion 3
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Cf. https://www.nginx.com/blog/creating-installable-packages-dynamic-modules/
|
|
||||||
%global nginx_abiversion %{version}
|
|
||||||
|
|
||||||
%global nginx_moduledir %{_libdir}/nginx/modules
|
|
||||||
%global nginx_moduleconfdir %{_datadir}/nginx/modules
|
|
||||||
%global nginx_srcdir %{_usrsrc}/%{name}-%{version}-%{release}
|
|
||||||
|
|
||||||
# Do not generate provides/requires from nginx sources
|
|
||||||
%global __provides_exclude_from ^%{nginx_srcdir}/.*$
|
|
||||||
%global __requires_exclude_from ^%{nginx_srcdir}/.*$
|
|
||||||
|
|
||||||
|
|
||||||
Name: nginx
|
Name: nginx
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 1.22.1
|
Version: 1.16.1
|
||||||
Release: 8%{?dist}
|
Release: 1%{?dist}
|
||||||
|
|
||||||
Summary: A high performance web server and reverse proxy server
|
Summary: A high performance web server and reverse proxy server
|
||||||
|
Group: System Environment/Daemons
|
||||||
# BSD License (two clause)
|
# BSD License (two clause)
|
||||||
# http://www.freebsd.org/copyright/freebsd-license.html
|
# http://www.freebsd.org/copyright/freebsd-license.html
|
||||||
License: BSD
|
License: BSD
|
||||||
URL: https://nginx.org
|
URL: http://nginx.org/
|
||||||
|
|
||||||
Source0: https://nginx.org/download/nginx-%{version}.tar.gz
|
Source0: https://nginx.org/download/nginx-%{version}.tar.gz
|
||||||
Source1: https://nginx.org/download/nginx-%{version}.tar.gz.asc
|
|
||||||
# Keys are found here: https://nginx.org/en/pgp_keys.html
|
|
||||||
Source2: https://nginx.org/keys/maxim.key
|
|
||||||
Source3: https://nginx.org/keys/mdounin.key
|
|
||||||
Source4: https://nginx.org/keys/sb.key
|
|
||||||
Source5: https://nginx.org/keys/thresh.key
|
|
||||||
Source10: nginx.service
|
Source10: nginx.service
|
||||||
Source11: nginx.logrotate
|
Source11: nginx.logrotate
|
||||||
Source12: nginx.conf
|
Source12: nginx.conf
|
||||||
Source13: nginx-upgrade
|
Source13: nginx-upgrade
|
||||||
Source14: nginx-upgrade.8
|
Source14: nginx-upgrade.8
|
||||||
Source15: macros.nginxmods.in
|
Source100: index.html
|
||||||
Source16: nginxmods.attr
|
Source101: poweredby.png
|
||||||
Source17: nginx-ssl-pass-dialog
|
|
||||||
Source102: nginx-logo.png
|
Source102: nginx-logo.png
|
||||||
Source103: 404.html
|
Source103: 404.html
|
||||||
Source104: 50x.html
|
Source104: 50x.html
|
||||||
@ -87,92 +44,55 @@ Source210: UPGRADE-NOTES-1.6-to-1.10
|
|||||||
|
|
||||||
# removes -Werror in upstream build scripts. -Werror conflicts with
|
# removes -Werror in upstream build scripts. -Werror conflicts with
|
||||||
# -D_FORTIFY_SOURCE=2 causing warnings to turn into errors.
|
# -D_FORTIFY_SOURCE=2 causing warnings to turn into errors.
|
||||||
Patch0: 0001-remove-Werror-in-upstream-build-scripts.patch
|
Patch0: nginx-auto-cc-gcc.patch
|
||||||
|
|
||||||
# downstream patch - fix PIDFile race condition (rhbz#1869026)
|
# downstream patch - changing logs permissions to 664 instead
|
||||||
# rejected upstream: https://trac.nginx.org/nginx/ticket/1897
|
# previous 644
|
||||||
Patch1: 0002-fix-PIDFile-handling.patch
|
Patch1: nginx-1.14.0-logs-perm.patch
|
||||||
|
|
||||||
# downstream patch for RHEL - https://bugzilla.redhat.com/show_bug.cgi?id=1955564
|
# PKCS#11 engine fix
|
||||||
Patch2: 0003-Support-loading-cert-hardware-token-PKC.patch
|
Patch2: nginx-1.16.0-pkcs11.patch
|
||||||
|
|
||||||
# downstream patch for RHEL - https://bugzilla.redhat.com/show_bug.cgi?id=2006822
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1655530
|
||||||
Patch3: 0004-Set-proper-compiler-optimalization-level-O2-for-perl.patch
|
Patch3: nginx-1.14.1-perl-module-hardening.patch
|
||||||
|
|
||||||
# downstream patch for RHEL - https://bugzilla.redhat.com/show_bug.cgi?id=2006420
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1643647
|
||||||
Patch4: 0005-Init-openssl-engine-properly.patch
|
Patch4: nginx-1.16.0-enable-tls1v3-by-default.patch
|
||||||
|
|
||||||
# downstream patch for RHEL - https://bugzilla.redhat.com/show_bug.cgi?id=2028781
|
|
||||||
Patch5: 0007-Enable-TLSv1.3-by-default.patch
|
|
||||||
|
|
||||||
# downstream patch - Add ssl-pass-phrase-dialog helper script for
|
|
||||||
# encrypted private keys with pass phrase decryption
|
|
||||||
#
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2170808
|
|
||||||
Patch6: 0008-add-ssl-pass-phrase-dialog.patch
|
|
||||||
|
|
||||||
# security fix - https://issues.redhat.com/browse/RHEL-12737
|
|
||||||
Patch7: 0009-CVE-2023-44487-HTTP-2-per-iteration-stream-handling.patch
|
|
||||||
|
|
||||||
# downstream patch - https://issues.redhat.com/browse/RHEL-40621
|
|
||||||
Patch8: 0010-defer-ENGINE_finish-calls-to-a-cleanup.patch
|
|
||||||
|
|
||||||
# upstream patch - https://issues.redhat.com/browse/RHEL-40075
|
|
||||||
Patch9: 0011-Optimized-chain-link-usage.patch
|
|
||||||
|
|
||||||
BuildRequires: make
|
|
||||||
BuildRequires: gcc
|
|
||||||
BuildRequires: gnupg2
|
|
||||||
%if 0%{?with_gperftools}
|
%if 0%{?with_gperftools}
|
||||||
BuildRequires: gperftools-devel
|
BuildRequires: gperftools-devel
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: openssl%{?openssl_pkgversion}-devel
|
BuildRequires: openssl-devel
|
||||||
BuildRequires: pcre2-devel
|
BuildRequires: pcre-devel
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
|
|
||||||
Requires: nginx-filesystem = %{epoch}:%{version}-%{release}
|
Requires: nginx-filesystem = %{epoch}:%{version}-%{release}
|
||||||
%if 0%{?el7}
|
|
||||||
# centos-logos el7 does not provide 'system-indexhtml'
|
%if 0%{?rhel} > 0 && 0%{?rhel} < 8
|
||||||
Requires: system-logos redhat-indexhtml
|
# Introduced at 1:1.10.0-1 to ease upgrade path. To be removed later.
|
||||||
# need to remove epel7 geoip sub-package, doesn't work anymore
|
Requires: nginx-all-modules = %{epoch}:%{version}-%{release}
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1576034
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1664957
|
|
||||||
Obsoletes: nginx-mod-http-geoip <= 1:1.16
|
|
||||||
%else
|
|
||||||
Requires: system-logos-httpd
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Provides: webserver
|
Requires: openssl
|
||||||
%if 0%{?fedora} || 0%{?rhel} >= 8
|
Requires: pcre
|
||||||
Recommends: logrotate
|
Requires(pre): nginx-filesystem
|
||||||
|
%if 0%{?with_mailcap_mimetypes}
|
||||||
|
Requires: nginx-mimetypes
|
||||||
%endif
|
%endif
|
||||||
Requires: %{name}-core = %{epoch}:%{version}-%{release}
|
Provides: webserver
|
||||||
|
|
||||||
BuildRequires: systemd
|
BuildRequires: systemd
|
||||||
Requires(post): systemd
|
Requires(post): systemd
|
||||||
Requires(preun): systemd
|
Requires(preun): systemd
|
||||||
Requires(postun): systemd
|
Requires(postun): systemd
|
||||||
# For external nginx modules
|
|
||||||
Provides: nginx(abi) = %{nginx_abiversion}
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
|
Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
|
||||||
IMAP protocols, with a strong focus on high concurrency, performance and low
|
IMAP protocols, with a strong focus on high concurrency, performance and low
|
||||||
memory usage.
|
memory usage.
|
||||||
|
|
||||||
%package core
|
|
||||||
Summary: nginx minimal core
|
|
||||||
%if 0%{?with_mailcap_mimetypes}
|
|
||||||
Requires: nginx-mimetypes
|
|
||||||
%endif
|
|
||||||
Requires: openssl%{?openssl_pkgversion}-libs
|
|
||||||
Requires(pre): nginx-filesystem
|
|
||||||
Conflicts: nginx < 1:1.20.1-13
|
|
||||||
|
|
||||||
%description core
|
|
||||||
nginx minimal core
|
|
||||||
|
|
||||||
%package all-modules
|
%package all-modules
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: A meta package that installs all available Nginx modules
|
Summary: A meta package that installs all available Nginx modules
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
@ -186,9 +106,10 @@ Requires: nginx-mod-mail = %{epoch}:%{version}-%{release}
|
|||||||
Requires: nginx-mod-stream = %{epoch}:%{version}-%{release}
|
Requires: nginx-mod-stream = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
%description all-modules
|
%description all-modules
|
||||||
Meta package that installs all available nginx modules.
|
A meta package that installs all available Nginx modules.
|
||||||
|
|
||||||
%package filesystem
|
%package filesystem
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: The basic directory layout for the Nginx server
|
Summary: The basic directory layout for the Nginx server
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
Requires(pre): shadow-utils
|
Requires(pre): shadow-utils
|
||||||
@ -200,9 +121,10 @@ directories.
|
|||||||
|
|
||||||
%if %{with geoip}
|
%if %{with geoip}
|
||||||
%package mod-http-geoip
|
%package mod-http-geoip
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: Nginx HTTP geoip module
|
Summary: Nginx HTTP geoip module
|
||||||
BuildRequires: GeoIP-devel
|
BuildRequires: GeoIP-devel
|
||||||
Requires: nginx(abi) = %{nginx_abiversion}
|
Requires: nginx
|
||||||
Requires: GeoIP
|
Requires: GeoIP
|
||||||
|
|
||||||
%description mod-http-geoip
|
%description mod-http-geoip
|
||||||
@ -210,22 +132,24 @@ Requires: GeoIP
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%package mod-http-image-filter
|
%package mod-http-image-filter
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: Nginx HTTP image filter module
|
Summary: Nginx HTTP image filter module
|
||||||
BuildRequires: gd-devel
|
BuildRequires: gd-devel
|
||||||
Requires: nginx(abi) = %{nginx_abiversion}
|
Requires: nginx
|
||||||
Requires: gd
|
Requires: gd
|
||||||
|
|
||||||
%description mod-http-image-filter
|
%description mod-http-image-filter
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
|
||||||
%package mod-http-perl
|
%package mod-http-perl
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: Nginx HTTP perl module
|
Summary: Nginx HTTP perl module
|
||||||
BuildRequires: perl-devel
|
BuildRequires: perl-devel
|
||||||
%if 0%{?fedora} >= 24 || 0%{?rhel} >= 7
|
%if 0%{?fedora} >= 24
|
||||||
BuildRequires: perl-generators
|
BuildRequires: perl-generators
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: perl(ExtUtils::Embed)
|
BuildRequires: perl(ExtUtils::Embed)
|
||||||
Requires: nginx(abi) = %{nginx_abiversion}
|
Requires: nginx
|
||||||
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
|
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
|
||||||
Requires: perl(constant)
|
Requires: perl(constant)
|
||||||
|
|
||||||
@ -233,55 +157,39 @@ Requires: perl(constant)
|
|||||||
%{summary}.
|
%{summary}.
|
||||||
|
|
||||||
%package mod-http-xslt-filter
|
%package mod-http-xslt-filter
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: Nginx XSLT module
|
Summary: Nginx XSLT module
|
||||||
BuildRequires: libxslt-devel
|
BuildRequires: libxslt-devel
|
||||||
Requires: nginx(abi) = %{nginx_abiversion}
|
Requires: nginx
|
||||||
|
|
||||||
%description mod-http-xslt-filter
|
%description mod-http-xslt-filter
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
|
||||||
%package mod-mail
|
%package mod-mail
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: Nginx mail modules
|
Summary: Nginx mail modules
|
||||||
Requires: nginx(abi) = %{nginx_abiversion}
|
Requires: nginx
|
||||||
|
|
||||||
%description mod-mail
|
%description mod-mail
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
|
||||||
%package mod-stream
|
%package mod-stream
|
||||||
|
Group: System Environment/Daemons
|
||||||
Summary: Nginx stream modules
|
Summary: Nginx stream modules
|
||||||
Requires: nginx(abi) = %{nginx_abiversion}
|
Requires: nginx
|
||||||
|
|
||||||
%description mod-stream
|
%description mod-stream
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
|
||||||
%package mod-devel
|
|
||||||
Summary: Nginx module development files
|
|
||||||
Requires: nginx = %{epoch}:%{version}-%{release}
|
|
||||||
Requires: make
|
|
||||||
Requires: gcc
|
|
||||||
Requires: gd-devel
|
|
||||||
%if 0%{?with_gperftools}
|
|
||||||
Requires: gperftools-devel
|
|
||||||
%endif
|
|
||||||
%if %{with geoip}
|
|
||||||
Requires: GeoIP-devel
|
|
||||||
%endif
|
|
||||||
Requires: libxslt-devel
|
|
||||||
Requires: openssl%{?openssl_pkgversion}-devel
|
|
||||||
Requires: pcre2-devel
|
|
||||||
Requires: perl-devel
|
|
||||||
Requires: perl(ExtUtils::Embed)
|
|
||||||
Requires: zlib-devel
|
|
||||||
|
|
||||||
%description mod-devel
|
|
||||||
%{summary}.
|
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
# Combine all keys from upstream into one file
|
%setup -q
|
||||||
cat %{S:2} %{S:3} %{S:4} %{S:5} > %{_builddir}/%{name}.gpg
|
%patch0 -p0
|
||||||
%{gpgverify} --keyring='%{_builddir}/%{name}.gpg' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
%patch1 -p1
|
||||||
%autosetup -p1
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
|
||||||
cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} .
|
cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} .
|
||||||
|
|
||||||
%if 0%{?rhel} > 0 && 0%{?rhel} < 8
|
%if 0%{?rhel} > 0 && 0%{?rhel} < 8
|
||||||
@ -289,17 +197,6 @@ sed -i -e 's#KillMode=.*#KillMode=process#g' nginx.service
|
|||||||
sed -i -e 's#PROFILE=SYSTEM#HIGH:!aNULL:!MD5#' nginx.conf
|
sed -i -e 's#PROFILE=SYSTEM#HIGH:!aNULL:!MD5#' nginx.conf
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{?openssl_pkgversion}
|
|
||||||
sed \
|
|
||||||
-e 's|\(ngx_feature_path=\)$|\1%{_includedir}/openssl%{openssl_pkgversion}|' \
|
|
||||||
-e 's|\(ngx_feature_libs="\)|\1-L%{_libdir}/openssl%{openssl_pkgversion} |' \
|
|
||||||
-i auto/lib/openssl/conf
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Prepare sources for installation
|
|
||||||
cp -a ../%{name}-%{version} ../%{name}-%{version}-%{release}-src
|
|
||||||
mv ../%{name}-%{version}-%{release}-src .
|
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# nginx does not utilize a standard configure script. It has its own
|
# nginx does not utilize a standard configure script. It has its own
|
||||||
@ -307,12 +204,10 @@ mv ../%{name}-%{version}-%{release}-src .
|
|||||||
# to error out. This is is also the reason for the DESTDIR environment
|
# to error out. This is is also the reason for the DESTDIR environment
|
||||||
# variable.
|
# variable.
|
||||||
export DESTDIR=%{buildroot}
|
export DESTDIR=%{buildroot}
|
||||||
# So the perl module finds its symbols:
|
./configure \
|
||||||
nginx_ldopts="$RPM_LD_FLAGS -Wl,-E"
|
|
||||||
if ! ./configure \
|
|
||||||
--prefix=%{_datadir}/nginx \
|
--prefix=%{_datadir}/nginx \
|
||||||
--sbin-path=%{_sbindir}/nginx \
|
--sbin-path=%{_sbindir}/nginx \
|
||||||
--modules-path=%{nginx_moduledir} \
|
--modules-path=%{_libdir}/nginx/modules \
|
||||||
--conf-path=%{_sysconfdir}/nginx/nginx.conf \
|
--conf-path=%{_sysconfdir}/nginx/nginx.conf \
|
||||||
--error-log-path=%{_localstatedir}/log/nginx/error.log \
|
--error-log-path=%{_localstatedir}/log/nginx/error.log \
|
||||||
--http-log-path=%{_localstatedir}/log/nginx/access.log \
|
--http-log-path=%{_localstatedir}/log/nginx/access.log \
|
||||||
@ -325,61 +220,51 @@ if ! ./configure \
|
|||||||
--lock-path=/run/lock/subsys/nginx \
|
--lock-path=/run/lock/subsys/nginx \
|
||||||
--user=%{nginx_user} \
|
--user=%{nginx_user} \
|
||||||
--group=%{nginx_user} \
|
--group=%{nginx_user} \
|
||||||
--with-compat \
|
|
||||||
--with-debug \
|
|
||||||
%if 0%{?with_aio}
|
%if 0%{?with_aio}
|
||||||
--with-file-aio \
|
--with-file-aio \
|
||||||
%endif
|
%endif
|
||||||
%if 0%{?with_gperftools}
|
--with-ipv6 \
|
||||||
--with-google_perftools_module \
|
--with-http_ssl_module \
|
||||||
%endif
|
--with-http_v2_module \
|
||||||
|
--with-http_realip_module \
|
||||||
|
--with-stream_ssl_preread_module \
|
||||||
--with-http_addition_module \
|
--with-http_addition_module \
|
||||||
--with-http_auth_request_module \
|
--with-http_xslt_module=dynamic \
|
||||||
--with-http_dav_module \
|
--with-http_image_filter_module=dynamic \
|
||||||
--with-http_degradation_module \
|
|
||||||
--with-http_flv_module \
|
|
||||||
%if %{with geoip}
|
%if %{with geoip}
|
||||||
--with-http_geoip_module=dynamic \
|
--with-http_geoip_module=dynamic \
|
||||||
--with-stream_geoip_module=dynamic \
|
|
||||||
%endif
|
%endif
|
||||||
|
--with-http_sub_module \
|
||||||
|
--with-http_dav_module \
|
||||||
|
--with-http_flv_module \
|
||||||
|
--with-http_mp4_module \
|
||||||
--with-http_gunzip_module \
|
--with-http_gunzip_module \
|
||||||
--with-http_gzip_static_module \
|
--with-http_gzip_static_module \
|
||||||
--with-http_image_filter_module=dynamic \
|
|
||||||
--with-http_mp4_module \
|
|
||||||
--with-http_perl_module=dynamic \
|
|
||||||
--with-http_random_index_module \
|
--with-http_random_index_module \
|
||||||
--with-http_realip_module \
|
|
||||||
--with-http_secure_link_module \
|
--with-http_secure_link_module \
|
||||||
|
--with-http_degradation_module \
|
||||||
--with-http_slice_module \
|
--with-http_slice_module \
|
||||||
--with-http_ssl_module \
|
|
||||||
--with-http_stub_status_module \
|
--with-http_stub_status_module \
|
||||||
--with-http_sub_module \
|
--with-http_perl_module=dynamic \
|
||||||
--with-http_v2_module \
|
--with-http_auth_request_module \
|
||||||
--with-http_xslt_module=dynamic \
|
|
||||||
--with-mail=dynamic \
|
--with-mail=dynamic \
|
||||||
--with-mail_ssl_module \
|
--with-mail_ssl_module \
|
||||||
%if 0%{?with_ktls}
|
|
||||||
--with-openssl-opt=enable-ktls \
|
|
||||||
%endif
|
|
||||||
--with-pcre \
|
--with-pcre \
|
||||||
--with-pcre-jit \
|
--with-pcre-jit \
|
||||||
--with-stream=dynamic \
|
--with-stream=dynamic \
|
||||||
--with-stream_realip_module \
|
|
||||||
--with-stream_ssl_module \
|
--with-stream_ssl_module \
|
||||||
--with-stream_ssl_preread_module \
|
%if 0%{?with_gperftools}
|
||||||
--with-threads \
|
--with-google_perftools_module \
|
||||||
--with-cc-opt="%{optflags} $(pcre2-config --cflags)" \
|
%endif
|
||||||
--with-ld-opt="$nginx_ldopts"; then
|
--with-debug \
|
||||||
: configure failed
|
--with-cc-opt="%{optflags} $(pcre-config --cflags)" \
|
||||||
cat objs/autoconf.err
|
--with-ld-opt="$RPM_LD_FLAGS -Wl,-E" # so the perl module finds its symbols
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
%make_build
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install INSTALLDIRS=vendor
|
make install DESTDIR=%{buildroot} INSTALLDIRS=vendor
|
||||||
|
|
||||||
find %{buildroot} -type f -name .packlist -exec rm -f '{}' \;
|
find %{buildroot} -type f -name .packlist -exec rm -f '{}' \;
|
||||||
find %{buildroot} -type f -name perllocal.pod -exec rm -f '{}' \;
|
find %{buildroot} -type f -name perllocal.pod -exec rm -f '{}' \;
|
||||||
@ -402,39 +287,15 @@ install -p -d -m 0700 %{buildroot}%{_localstatedir}/lib/nginx/tmp
|
|||||||
install -p -d -m 0700 %{buildroot}%{_localstatedir}/log/nginx
|
install -p -d -m 0700 %{buildroot}%{_localstatedir}/log/nginx
|
||||||
|
|
||||||
install -p -d -m 0755 %{buildroot}%{_datadir}/nginx/html
|
install -p -d -m 0755 %{buildroot}%{_datadir}/nginx/html
|
||||||
install -p -d -m 0755 %{buildroot}%{nginx_moduleconfdir}
|
install -p -d -m 0755 %{buildroot}%{_datadir}/nginx/modules
|
||||||
install -p -d -m 0755 %{buildroot}%{nginx_moduledir}
|
install -p -d -m 0755 %{buildroot}%{_libdir}/nginx/modules
|
||||||
|
|
||||||
|
|
||||||
install -p -m 0644 ./nginx.conf \
|
install -p -m 0644 ./nginx.conf \
|
||||||
%{buildroot}%{_sysconfdir}/nginx
|
%{buildroot}%{_sysconfdir}/nginx
|
||||||
|
install -p -m 0644 %{SOURCE100} \
|
||||||
rm -f %{buildroot}%{_datadir}/nginx/html/index.html
|
%{buildroot}%{_datadir}/nginx/html
|
||||||
%if 0%{?el7}
|
install -p -m 0644 %{SOURCE101} %{SOURCE102} \
|
||||||
ln -s ../../doc/HTML/index.html \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html/index.html
|
|
||||||
ln -s ../../doc/HTML/img \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html/img
|
|
||||||
ln -s ../../doc/HTML/en-US \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html/en-US
|
|
||||||
%else
|
|
||||||
ln -s ../../testpage/index.html \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html/index.html
|
|
||||||
%endif
|
|
||||||
install -p -m 0644 %{SOURCE102} \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html
|
%{buildroot}%{_datadir}/nginx/html
|
||||||
ln -s nginx-logo.png %{buildroot}%{_datadir}/nginx/html/poweredby.png
|
|
||||||
mkdir -p %{buildroot}%{_datadir}/nginx/html/icons
|
|
||||||
|
|
||||||
# Symlink for the powered-by-$DISTRO image:
|
|
||||||
ln -s ../../../pixmaps/poweredby.png \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html/icons/poweredby.png
|
|
||||||
|
|
||||||
%if 0%{?rhel} >= 9
|
|
||||||
ln -s ../../pixmaps/system-noindex-logo.png \
|
|
||||||
%{buildroot}%{_datadir}/nginx/html/system_noindex_logo.png
|
|
||||||
%endif
|
|
||||||
|
|
||||||
install -p -m 0644 %{SOURCE103} %{SOURCE104} \
|
install -p -m 0644 %{SOURCE103} %{SOURCE104} \
|
||||||
%{buildroot}%{_datadir}/nginx/html
|
%{buildroot}%{_datadir}/nginx/html
|
||||||
|
|
||||||
@ -448,45 +309,25 @@ install -p -D -m 0644 %{_builddir}/nginx-%{version}/objs/nginx.8 \
|
|||||||
install -p -D -m 0755 %{SOURCE13} %{buildroot}%{_bindir}/nginx-upgrade
|
install -p -D -m 0755 %{SOURCE13} %{buildroot}%{_bindir}/nginx-upgrade
|
||||||
install -p -D -m 0644 %{SOURCE14} %{buildroot}%{_mandir}/man8/nginx-upgrade.8
|
install -p -D -m 0644 %{SOURCE14} %{buildroot}%{_mandir}/man8/nginx-upgrade.8
|
||||||
|
|
||||||
for i in ftdetect ftplugin indent syntax; do
|
for i in ftdetect indent syntax; do
|
||||||
install -p -D -m644 contrib/vim/${i}/nginx.vim \
|
install -p -D -m644 contrib/vim/${i}/nginx.vim \
|
||||||
%{buildroot}%{_datadir}/vim/vimfiles/${i}/nginx.vim
|
%{buildroot}%{_datadir}/vim/vimfiles/${i}/nginx.vim
|
||||||
done
|
done
|
||||||
|
|
||||||
%if %{with geoip}
|
%if %{with geoip}
|
||||||
echo 'load_module "%{nginx_moduledir}/ngx_http_geoip_module.so";' \
|
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_geoip_module.so";' \
|
||||||
> %{buildroot}%{nginx_moduleconfdir}/mod-http-geoip.conf
|
> %{buildroot}%{_datadir}/nginx/modules/mod-http-geoip.conf
|
||||||
%endif
|
%endif
|
||||||
echo 'load_module "%{nginx_moduledir}/ngx_http_image_filter_module.so";' \
|
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_image_filter_module.so";' \
|
||||||
> %{buildroot}%{nginx_moduleconfdir}/mod-http-image-filter.conf
|
> %{buildroot}%{_datadir}/nginx/modules/mod-http-image-filter.conf
|
||||||
echo 'load_module "%{nginx_moduledir}/ngx_http_perl_module.so";' \
|
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_perl_module.so";' \
|
||||||
> %{buildroot}%{nginx_moduleconfdir}/mod-http-perl.conf
|
> %{buildroot}%{_datadir}/nginx/modules/mod-http-perl.conf
|
||||||
echo 'load_module "%{nginx_moduledir}/ngx_http_xslt_filter_module.so";' \
|
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_xslt_filter_module.so";' \
|
||||||
> %{buildroot}%{nginx_moduleconfdir}/mod-http-xslt-filter.conf
|
> %{buildroot}%{_datadir}/nginx/modules/mod-http-xslt-filter.conf
|
||||||
echo 'load_module "%{nginx_moduledir}/ngx_mail_module.so";' \
|
echo 'load_module "%{_libdir}/nginx/modules/ngx_mail_module.so";' \
|
||||||
> %{buildroot}%{nginx_moduleconfdir}/mod-mail.conf
|
> %{buildroot}%{_datadir}/nginx/modules/mod-mail.conf
|
||||||
echo 'load_module "%{nginx_moduledir}/ngx_stream_module.so";' \
|
echo 'load_module "%{_libdir}/nginx/modules/ngx_stream_module.so";' \
|
||||||
> %{buildroot}%{nginx_moduleconfdir}/mod-stream.conf
|
> %{buildroot}%{_datadir}/nginx/modules/mod-stream.conf
|
||||||
|
|
||||||
# Install files for supporting nginx module builds
|
|
||||||
## Install source files
|
|
||||||
mkdir -p %{buildroot}%{_usrsrc}
|
|
||||||
mv %{name}-%{version}-%{release}-src %{buildroot}%{nginx_srcdir}
|
|
||||||
## Install rpm macros
|
|
||||||
mkdir -p %{buildroot}%{_rpmmacrodir}
|
|
||||||
sed -e "s|@@NGINX_ABIVERSION@@|%{nginx_abiversion}|g" \
|
|
||||||
-e "s|@@NGINX_MODDIR@@|%{nginx_moduledir}|g" \
|
|
||||||
-e "s|@@NGINX_MODCONFDIR@@|%{nginx_moduleconfdir}|g" \
|
|
||||||
-e "s|@@NGINX_SRCDIR@@|%{nginx_srcdir}|g" \
|
|
||||||
%{SOURCE15} > %{buildroot}%{_rpmmacrodir}/macros.nginxmods
|
|
||||||
## Install dependency generator
|
|
||||||
install -Dpm0644 -t %{buildroot}%{_fileattrsdir} %{SOURCE16}
|
|
||||||
|
|
||||||
# install http-ssl-pass-dialog
|
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_libexecdir}
|
|
||||||
install -m755 $RPM_SOURCE_DIR/nginx-ssl-pass-dialog \
|
|
||||||
$RPM_BUILD_ROOT%{_libexecdir}/nginx-ssl-pass-dialog
|
|
||||||
|
|
||||||
|
|
||||||
%pre filesystem
|
%pre filesystem
|
||||||
getent group %{nginx_user} > /dev/null || groupadd -r %{nginx_user}
|
getent group %{nginx_user} > /dev/null || groupadd -r %{nginx_user}
|
||||||
@ -540,25 +381,21 @@ if [ $1 -ge 1 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%files
|
%files
|
||||||
|
%license LICENSE
|
||||||
|
%doc CHANGES README README.dynamic
|
||||||
%if 0%{?rhel} == 7
|
%if 0%{?rhel} == 7
|
||||||
%doc UPGRADE-NOTES-1.6-to-1.10
|
%doc UPGRADE-NOTES-1.6-to-1.10
|
||||||
%endif
|
%endif
|
||||||
%{_datadir}/nginx/html/*
|
%{_datadir}/nginx/html/*
|
||||||
%{_bindir}/nginx-upgrade
|
%{_bindir}/nginx-upgrade
|
||||||
|
%{_sbindir}/nginx
|
||||||
%{_datadir}/vim/vimfiles/ftdetect/nginx.vim
|
%{_datadir}/vim/vimfiles/ftdetect/nginx.vim
|
||||||
%{_datadir}/vim/vimfiles/ftplugin/nginx.vim
|
|
||||||
%{_datadir}/vim/vimfiles/syntax/nginx.vim
|
%{_datadir}/vim/vimfiles/syntax/nginx.vim
|
||||||
%{_datadir}/vim/vimfiles/indent/nginx.vim
|
%{_datadir}/vim/vimfiles/indent/nginx.vim
|
||||||
%{_mandir}/man3/nginx.3pm*
|
%{_mandir}/man3/nginx.3pm*
|
||||||
%{_mandir}/man8/nginx.8*
|
%{_mandir}/man8/nginx.8*
|
||||||
%{_mandir}/man8/nginx-upgrade.8*
|
%{_mandir}/man8/nginx-upgrade.8*
|
||||||
%{_unitdir}/nginx.service
|
%{_unitdir}/nginx.service
|
||||||
%{_libexecdir}/nginx-ssl-pass-dialog
|
|
||||||
|
|
||||||
%files core
|
|
||||||
%license LICENSE
|
|
||||||
%doc CHANGES README README.dynamic
|
|
||||||
%{_sbindir}/nginx
|
|
||||||
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf
|
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf
|
||||||
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf.default
|
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf.default
|
||||||
%config(noreplace) %{_sysconfdir}/nginx/fastcgi_params
|
%config(noreplace) %{_sysconfdir}/nginx/fastcgi_params
|
||||||
@ -579,11 +416,8 @@ fi
|
|||||||
%config(noreplace) %{_sysconfdir}/logrotate.d/nginx
|
%config(noreplace) %{_sysconfdir}/logrotate.d/nginx
|
||||||
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx
|
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx
|
||||||
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx/tmp
|
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx/tmp
|
||||||
%attr(711,root,root) %dir %{_localstatedir}/log/nginx
|
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/log/nginx
|
||||||
%ghost %attr(640,%{nginx_user},root) %{_localstatedir}/log/nginx/access.log
|
%dir %{_libdir}/nginx/modules
|
||||||
%ghost %attr(640,%{nginx_user},root) %{_localstatedir}/log/nginx/error.log
|
|
||||||
%dir %{nginx_moduledir}
|
|
||||||
%dir %{nginx_moduleconfdir}
|
|
||||||
|
|
||||||
%files all-modules
|
%files all-modules
|
||||||
|
|
||||||
@ -598,239 +432,97 @@ fi
|
|||||||
|
|
||||||
%if %{with geoip}
|
%if %{with geoip}
|
||||||
%files mod-http-geoip
|
%files mod-http-geoip
|
||||||
%{nginx_moduleconfdir}/mod-http-geoip.conf
|
%{_datadir}/nginx/modules/mod-http-geoip.conf
|
||||||
%{nginx_moduledir}/ngx_http_geoip_module.so
|
%{_libdir}/nginx/modules/ngx_http_geoip_module.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files mod-http-image-filter
|
%files mod-http-image-filter
|
||||||
%{nginx_moduleconfdir}/mod-http-image-filter.conf
|
%{_datadir}/nginx/modules/mod-http-image-filter.conf
|
||||||
%{nginx_moduledir}/ngx_http_image_filter_module.so
|
%{_libdir}/nginx/modules/ngx_http_image_filter_module.so
|
||||||
|
|
||||||
%files mod-http-perl
|
%files mod-http-perl
|
||||||
%{nginx_moduleconfdir}/mod-http-perl.conf
|
%{_datadir}/nginx/modules/mod-http-perl.conf
|
||||||
%{nginx_moduledir}/ngx_http_perl_module.so
|
%{_libdir}/nginx/modules/ngx_http_perl_module.so
|
||||||
%dir %{perl_vendorarch}/auto/nginx
|
%dir %{perl_vendorarch}/auto/nginx
|
||||||
%{perl_vendorarch}/nginx.pm
|
%{perl_vendorarch}/nginx.pm
|
||||||
%{perl_vendorarch}/auto/nginx/nginx.so
|
%{perl_vendorarch}/auto/nginx/nginx.so
|
||||||
|
|
||||||
%files mod-http-xslt-filter
|
%files mod-http-xslt-filter
|
||||||
%{nginx_moduleconfdir}/mod-http-xslt-filter.conf
|
%{_datadir}/nginx/modules/mod-http-xslt-filter.conf
|
||||||
%{nginx_moduledir}/ngx_http_xslt_filter_module.so
|
%{_libdir}/nginx/modules/ngx_http_xslt_filter_module.so
|
||||||
|
|
||||||
%files mod-mail
|
%files mod-mail
|
||||||
%{nginx_moduleconfdir}/mod-mail.conf
|
%{_datadir}/nginx/modules/mod-mail.conf
|
||||||
%{nginx_moduledir}/ngx_mail_module.so
|
%{_libdir}/nginx/modules/ngx_mail_module.so
|
||||||
|
|
||||||
%files mod-stream
|
%files mod-stream
|
||||||
%{nginx_moduleconfdir}/mod-stream.conf
|
%{_datadir}/nginx/modules/mod-stream.conf
|
||||||
%{nginx_moduledir}/ngx_stream_module.so
|
%{_libdir}/nginx/modules/ngx_stream_module.so
|
||||||
|
|
||||||
%files mod-devel
|
|
||||||
%{_rpmmacrodir}/macros.nginxmods
|
|
||||||
%{_fileattrsdir}/nginxmods.attr
|
|
||||||
%{nginx_srcdir}/
|
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Jul 16 2024 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-8
|
* Thu Aug 29 2019 Lubos Uhliarik <luhliari@redhat.com> - 1:1.16.1-1
|
||||||
- Resolves: RHEL-49349 - nginx worker processes memory leak
|
- update to 1.16.1
|
||||||
|
- Resolves: #1745697 - CVE-2019-9511 nginx:1.16/nginx: HTTP/2: large amount
|
||||||
|
of data request leads to denial of service
|
||||||
|
- Resolves: #1745690 - CVE-2019-9513 nginx:1.16/nginx: HTTP/2: flood using
|
||||||
|
PRIORITY frames resulting in excessive resource consumption
|
||||||
|
- Resolves: #1745645 - CVE-2019-9516 nginx:1.16/nginx: HTTP/2: 0-length
|
||||||
|
headers leads to denial of service
|
||||||
|
|
||||||
* Thu Jun 13 2024 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-7
|
* Wed Jun 26 2019 Lubos Uhliarik <luhliari@redhat.com> - 1:1.16.0-2
|
||||||
- Resolves: RHEL-40621 - openssl 3.2 ENGINE regression in nginx
|
- Resolves: #1718929 - ssl_protocols config option has faulty behavior
|
||||||
|
in nginx:1.16
|
||||||
|
|
||||||
* Thu May 23 2024 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-6
|
* Mon May 06 2019 Lubos Uhliarik <luhliari@redhat.com> - 1:1.16.0-1
|
||||||
- Resolves: RHEL-32650 - Nginx seg faults when proxy_ssl_certificate is set
|
- new version 1.16.0
|
||||||
|
- enable ngx_stream_ssl_preread module
|
||||||
|
- main package does NOT require all-modules package
|
||||||
|
|
||||||
* Mon Oct 16 2023 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-5
|
* Wed Dec 12 2018 Lubos Uhliarik <luhliari@redhat.com> - 1:1.14.1-8
|
||||||
- Resolves: RHEL-12737 - nginx:1.22/nginx: HTTP/2: Multiple HTTP/2 enabled web
|
- enable TLS 1.3 by default (#1643647)
|
||||||
servers are vulnerable to a DDoS attack (Rapid Reset Attack) (CVE-2023-44487)
|
- TLSv1.0 and TLSv1.1 can be enabled now (#1644746)
|
||||||
|
|
||||||
* Mon Aug 07 2023 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-4
|
|
||||||
- Resolves: #2170808 - Running nginx with systemctl and entering ssl
|
|
||||||
private key's pass phrase
|
|
||||||
- added new ssl_pass_phrase_dialog directive which enables setting
|
|
||||||
external program for entering password for encrypted private key
|
|
||||||
|
|
||||||
* Sun Dec 18 2022 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-3
|
|
||||||
- Resolves: #2150932 - No logrotating nginx logs from nginx:1.22
|
|
||||||
|
|
||||||
* Thu Dec 01 2022 Neal Gompa <ngompa@datto.com> - 1:1.22.1-2
|
|
||||||
- Require pcre2-devel instead of pcre-devel in -mod-devel subpackage
|
|
||||||
Resolves: rhbz#2149965
|
|
||||||
|
|
||||||
* Sat Oct 22 2022 Luboš Uhliarik <luhliari@redhat.com> - 1:1.22.1-1
|
|
||||||
- Resolves: #2096174 - RFE: add nginx:1.22 module stream
|
|
||||||
- switch to pcre2
|
|
||||||
- add stream_geoip_module and stream_realip_module
|
|
||||||
- enable kTLS support
|
|
||||||
|
|
||||||
* Wed Jun 22 2022 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-13
|
|
||||||
- Resolves: #2099752 - nginx minimisation for ubi-micro
|
|
||||||
|
|
||||||
* Tue Jun 21 2022 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-11
|
|
||||||
- Resolves: #2028781 - Protocol : TLSv1.3 missing in rhel9
|
|
||||||
|
|
||||||
* Wed Feb 02 2022 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-10
|
|
||||||
- Resolves: #1975747 - CVE-2021-3618 nginx: ALPACA: Application Layer Protocol
|
|
||||||
Confusion - Analyzing and Mitigating Cracks in TLS Authentication
|
|
||||||
|
|
||||||
* Thu Dec 2 2021 Joe Orton <jorton@redhat.com> - 1:1.20.1-9
|
|
||||||
- add delaycompress to logrotate config (#2015250)
|
|
||||||
|
|
||||||
* Wed Sep 22 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-8
|
|
||||||
- Resolves: #2007019 - use proper wording in error pages
|
|
||||||
|
|
||||||
* Wed Sep 22 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-7
|
|
||||||
- Resolves: #2006420 - Broken loading certificates from hardware token (PKCS#11)
|
|
||||||
|
|
||||||
* Wed Sep 22 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-6
|
|
||||||
- Resolves: #2006822 - Hardening tests fail for nginx
|
|
||||||
|
|
||||||
* Tue Sep 21 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-5
|
|
||||||
- Add -mod-devel subpackage for building external nginx modules
|
|
||||||
Resolves: rhbz#1991720 (Neal Gompa)
|
|
||||||
|
|
||||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1:1.20.1-4
|
|
||||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
|
||||||
Related: rhbz#1991688
|
|
||||||
|
|
||||||
* Mon Aug 09 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-3
|
|
||||||
- Resolves: #1991600 - Add logo symlink required by new testpage
|
|
||||||
|
|
||||||
* Wed Jun 16 2021 Mohan Boddu <mboddu@redhat.com> - 1:1.20.1-2
|
|
||||||
- Rebuilt for RHEL 9 BETA for openssl 3.0
|
|
||||||
Related: rhbz#1971065
|
|
||||||
|
|
||||||
* Wed Jun 02 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.1-1
|
|
||||||
- new version 1.20.1
|
|
||||||
- Resolves: #1964814 - CVE-2021-23017 nginx: Off-by-one in ngx_resolver_copy()
|
|
||||||
when labels are followed by a pointer to a root domain name
|
|
||||||
|
|
||||||
* Fri Apr 30 2021 Lubos Uhliarik <luhliari@redhat.com> - 1:1.20.0-5
|
|
||||||
- Resolves: #1955564 - [RFE] Support loading certificates from hardware
|
|
||||||
token (PKCS#11)
|
|
||||||
|
|
||||||
* Fri Apr 30 2021 Lubos Uhliarik <luhliari@redhat.com> - 1:1.20.0-4
|
|
||||||
- Resolves: #1955560 - centralizing default index.html on nginx
|
|
||||||
|
|
||||||
* Mon Apr 26 2021 Lubos Uhliarik <luhliari@redhat.com> - 1:1.20.0-3
|
|
||||||
- Resolve: #1953639 - Rebase nginx to 1.20
|
|
||||||
|
|
||||||
* Wed Apr 21 2021 Felix Kaechele <heffer@fedoraproject.org> - 1:1.20.0-2
|
|
||||||
- sync rawhide and EPEL7 spec files again
|
|
||||||
- systemd service reload now checks config file (rhbz#1565377)
|
|
||||||
- drop nginx requirement on nginx-all-modules (rhbz#1708799)
|
|
||||||
- let nginx handle log creation on logrotate (rhbz#1683388)
|
|
||||||
- have log directory owned by root (rhbz#1390183, CVE-2016-1247)
|
|
||||||
- remove obsolete --with-ipv6 (src PR#8)
|
|
||||||
- correction: pcre2 is actually not supported by nginx, reintroduce pcre
|
|
||||||
|
|
||||||
* Wed Apr 21 2021 Felix Kaechele <heffer@fedoraproject.org> - 1:1.20.0-1
|
|
||||||
- update to 1.20.0
|
|
||||||
- sync with mainline spec file
|
|
||||||
- order configure options alphabetically for easier comparinggit
|
|
||||||
- add --with-compat option (rhbz#1834452)
|
|
||||||
- add patch to fix PIDFile race condition (rhbz#1869026)
|
|
||||||
- use pcre2 instead of pcre (rhbz#1938984)
|
|
||||||
- add Wants=network-online.target to systemd unit (rhbz#1943779)
|
|
||||||
|
|
||||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1:1.18.0-6
|
|
||||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
|
||||||
|
|
||||||
* Mon Feb 22 2021 Lubos Uhliarik <luhliari@redhat.com> - 1:1.18.0-5
|
|
||||||
- Resolves: #1931402 - drop gperftools module
|
|
||||||
|
|
||||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.18.0-4
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.18.0-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jun 22 2020 Jitka Plesnikova <jplesnik@redhat.com> - 1:1.18.0-2
|
|
||||||
- Perl 5.32 rebuild
|
|
||||||
|
|
||||||
* Fri Apr 24 2020 Felix Kaechele <heffer@fedoraproject.org> - 1:1.18.0-1
|
|
||||||
- Update to 1.18.0
|
|
||||||
- Increased types_hash_max_size to 4096 in default config
|
|
||||||
- Add gpg source verification
|
|
||||||
- Add Recommends: logrotate
|
|
||||||
- Drop location / from default config (rhbz#1564768)
|
|
||||||
- Drop default_sever from default config (rhbz#1373822)
|
|
||||||
|
|
||||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.16.1-2
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sun Sep 15 2019 Warren Togami <warren@blockstream.com>
|
|
||||||
- add conditionals for EPEL7, see rhbz#1750857
|
|
||||||
|
|
||||||
* Tue Aug 13 2019 Jamie Nguyen <jamielinux@fedoraproject.org> - 1:1.16.1-1
|
|
||||||
- Update to upstream release 1.16.1
|
|
||||||
- Fixes CVE-2019-9511, CVE-2019-9513, CVE-2019-9516
|
|
||||||
|
|
||||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.16.0-5
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu May 30 2019 Jitka Plesnikova <jplesnik@redhat.com> - 1:1.16.0-4
|
|
||||||
- Perl 5.30 rebuild
|
|
||||||
|
|
||||||
* Tue May 14 2019 Stephen Gallagher <sgallagh@redhat.com> - 1.16.0-3
|
|
||||||
- Move to common default index.html
|
|
||||||
- Resolves: rhbz#1636235
|
|
||||||
|
|
||||||
* Tue May 07 2019 Jamie Nguyen <jamielinux@fedoraproject.org> - 1:1.16.0-2
|
|
||||||
- Add missing directory for vim plugin
|
|
||||||
|
|
||||||
* Fri Apr 26 2019 Jamie Nguyen <jamielinux@fedoraproject.org> - 1:1.16.0-1
|
|
||||||
- Update to upstream release 1.16.0
|
|
||||||
|
|
||||||
* Mon Mar 04 2019 Jamie Nguyen <jamielinux@fedoraproject.org> - 1:1.15.9-1
|
|
||||||
- Update to upstream release 1.15.9
|
|
||||||
- Enable ngx_stream_ssl_preread module
|
|
||||||
- Remove redundant conditionals
|
|
||||||
|
|
||||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.14.1-5
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 1:1.14.1-4
|
|
||||||
- Rebuilt for libcrypt.so.2 (#1666033)
|
|
||||||
|
|
||||||
* Tue Dec 11 2018 Joe Orton <jorton@redhat.com> - 1:1.14.1-3
|
* Tue Dec 11 2018 Joe Orton <jorton@redhat.com> - 1:1.14.1-3
|
||||||
- fix unexpanded paths in nginx(8)
|
- fix unexpanded paths in nginx(8) (#1643069)
|
||||||
|
|
||||||
* Tue Nov 20 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.14.1-2
|
* Mon Dec 03 2018 Lubos Uhliarik <luhliari@redhat.com> - 1:1.14.1-2
|
||||||
|
- Resolves: #1655530 - Hardening tests fail for nginx
|
||||||
|
|
||||||
|
* Mon Nov 19 2018 Lubos Uhliarik <luhliari@redhat.com> - 1:1.14.1-1
|
||||||
- new version 1.14.1
|
- new version 1.14.1
|
||||||
- Resolves: #1584426 - Upstream Nginx 1.14.0 is now available
|
- Resolves: #1647257 - CVE-2018-16845 nginx: Denial of service and
|
||||||
- Resolves: #1647255 - CVE-2018-16845 nginx: Denial of service and memory
|
memory disclosure via mp4 module
|
||||||
disclosure via mp4 module
|
- Resolves: #1647262 - CVE-2018-16844 nginx: Excessive CPU usage
|
||||||
- Resolves: #1647259 - CVE-2018-16843 nginx: Excessive memory consumption
|
via flaw in HTTP/2 implementation
|
||||||
|
- Resolves: #1647263 - CVE-2018-16843 nginx: Excessive memory consumption
|
||||||
via flaw in HTTP/2 implementation
|
via flaw in HTTP/2 implementation
|
||||||
- Resolves: #1647258 - CVE-2018-16844 nginx: Excessive CPU usage via flaw
|
|
||||||
in HTTP/2 implementation
|
|
||||||
|
|
||||||
* Mon Aug 06 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.12.1-14
|
* Wed Aug 8 2018 Joe Orton <jorton@redhat.com> - 1:1.14.0-3
|
||||||
- add requires on perl(constant) for mod-http-perl
|
- fix PKCS#11 support (Anderson Sasaki, #1545526)
|
||||||
|
|
||||||
* Mon Jul 30 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.12.1-13
|
* Mon Aug 06 2018 Lubos Uhliarik <luhliari@redhat.com> - 1:1.14.0-2
|
||||||
- don't build with geoip by default
|
- add dependency on perl(constant)
|
||||||
|
|
||||||
|
* Mon Jul 30 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.14.0-1
|
||||||
|
- Resolves: #1558420 - directory permissions are now correct after processing
|
||||||
|
USR1 signal
|
||||||
|
- Resolves: #1601414 - nginx: drop GeoIP support
|
||||||
|
|
||||||
* Thu Jul 19 2018 Joe Orton <jorton@redhat.com> - 1:1.12.1-12
|
* Thu Jul 19 2018 Joe Orton <jorton@redhat.com> - 1:1.12.1-12
|
||||||
- add build conditional for geoip support
|
- add build conditional for geoip support
|
||||||
|
|
||||||
* Mon Jul 16 2018 Tadej Janež <tadej.j@nez.si> - 1:1.12.1-11
|
* Thu May 03 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.14.0-1
|
||||||
- Add gcc to BuildRequires to account for
|
- new version 1.14.0
|
||||||
https://fedoraproject.org/wiki/Changes/Remove_GCC_from_BuildRoot
|
|
||||||
|
|
||||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.12.1-10
|
* Wed Apr 25 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.12.1-9
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
- changed directory permissions (#1558420)
|
||||||
|
|
||||||
* Wed Jun 27 2018 Jitka Plesnikova <jplesnik@redhat.com> - 1:1.12.1-9
|
* Fri Mar 23 2018 Joe Orton <jorton@redhat.com> - 1:1.12.1-8
|
||||||
- Perl 5.28 rebuild
|
- disable gperftools (#1496868)
|
||||||
|
|
||||||
* Mon May 14 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.12.1-8
|
* Thu Mar 22 2018 Joe Orton <jorton@redhat.com> - 1:1.12.1-7
|
||||||
- Related: #1573942 - nginx fails on start
|
- update branding (#1512565)
|
||||||
|
|
||||||
* Wed May 02 2018 Luboš Uhliarik <luhliari@redhat.com> - 1:1.12.1-7
|
|
||||||
- Resolves: #1573942 - nginx fails on start
|
|
||||||
|
|
||||||
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.12.1-6
|
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:1.12.1-6
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
@ -1,9 +0,0 @@
|
|||||||
--- !Policy
|
|
||||||
product_versions:
|
|
||||||
- rhel-9
|
|
||||||
decision_context: osci_compose_gate
|
|
||||||
rules:
|
|
||||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
|
|
||||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier2.functional}
|
|
||||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier3.functional}
|
|
||||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional}
|
|
@ -1,20 +0,0 @@
|
|||||||
%_nginx_abiversion @@NGINX_ABIVERSION@@
|
|
||||||
%_nginx_srcdir @@NGINX_SRCDIR@@
|
|
||||||
%_nginx_buildsrcdir nginx-src
|
|
||||||
%_nginx_modsrcdir ..
|
|
||||||
%_nginx_modbuilddir ../%{_vpath_builddir}
|
|
||||||
%nginx_moddir @@NGINX_MODDIR@@
|
|
||||||
%nginx_modconfdir @@NGINX_MODCONFDIR@@
|
|
||||||
|
|
||||||
%nginx_modrequires Requires: nginx(abi) = %{_nginx_abiversion}
|
|
||||||
|
|
||||||
%nginx_modconfigure(:-:) \\\
|
|
||||||
%undefine _strict_symbol_defs_build \
|
|
||||||
cp -a "%{_nginx_srcdir}" "%{_nginx_buildsrcdir}" \
|
|
||||||
cd "%{_nginx_buildsrcdir}" \
|
|
||||||
nginx_ldopts="$RPM_LD_FLAGS -Wl,-E" \
|
|
||||||
./configure --with-compat --with-cc-opt="%{optflags} $(pcre-config --cflags)" --with-ld-opt="$nginx_ldopts" \\\
|
|
||||||
--add-dynamic-module=$(realpath %{_nginx_modsrcdir}) --builddir=$(realpath %{_nginx_modbuilddir}) %{**} \
|
|
||||||
cd -
|
|
||||||
|
|
||||||
%nginx_modbuild %{__make} -C "%{_nginx_buildsrcdir}" %{_make_output_sync} %{?_smp_mflags} %{_make_verbose} modules
|
|
69
maxim.key
69
maxim.key
@ -1,69 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
yh4LsaVRdhbFe9aNd/O5iNgDcQtCUg==
|
|
||||||
=/pFc
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
33
mdounin.key
33
mdounin.key
@ -1,33 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: GnuPG v1.4.11 (FreeBSD)
|
|
||||||
|
|
||||||
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
|
|
||||||
=Tavt
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
Binary file not shown.
@ -1,14 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQHEBAABCAAuFiEEE8gqY7YDV2FW4wpOoOqYG2aw2WcFAmKM6+8QHGsucGF2bG92
|
|
||||||
QGY1LmNvbQAKCRCg6pgbZrDZZ6UoC/9RfOAJDP9HnXYTZfIvagxgZunO2FApIbVi
|
|
||||||
G6LOGFhDTCz4uBSHGTQXwkLn/i2TmvbFLMTelGjlZYGrARXBwfeMEZjeE038nemK
|
|
||||||
B4z0LCoRt8UiWTEV4T1OH06Xxl2ge6JgX4z4ZrQ1OKV0raGTCBrfz1VNUGAfPyQ5
|
|
||||||
jCRZFm9ZEiMn0kbDDRz5/EV8rktFV3mShmz/+SfQqZLrAoG7rIOP3QRcVhuhGx/c
|
|
||||||
4uwX0hPpGVkorE93UxRela9yhxX4uLvrqNOyn398qfC55Gun1O3lh3LHXOu2Mv3r
|
|
||||||
buhMJ1Z7p67C1DxjU6qZ/NTvgE1l+BUgdujH3c5nNiIyHudAw9cOflT2OXXmzKDC
|
|
||||||
UNAL6lA8arGSmw5Tp+lqZdwY7TDKsMdZGPyokik8xLksxKmMZ6Aslp4LbZknVwmX
|
|
||||||
K5H5hfbJTSvJuQpluJQKKN59I5z7V2iMNucl3QPlDK1KeU8Pk/1sBOLbrXDzQ1Vy
|
|
||||||
dpDs/7OnFlnEohwYDh1ZqBV6fl+Sccc=
|
|
||||||
=8cch
|
|
||||||
-----END PGP SIGNATURE-----
|
|
Binary file not shown.
Binary file not shown.
@ -1,14 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQHEBAABCAAuFiEEE8gqY7YDV2FW4wpOoOqYG2aw2WcFAmNPwgkQHGsucGF2bG92
|
|
||||||
QGY1LmNvbQAKCRCg6pgbZrDZZ521C/9stdPkXnyO46ZOHEBK0UhPXPLcLaeUPOj3
|
|
||||||
LZz0mS1pLeQrWVJcSzjn4x1VA1Mo24wJ2PDHVLDlz+wrGDWj+YQh0Pzt81AV/VWl
|
|
||||||
gDfbJ9ROfaXNUBMPWwKH5fxlocYYyYM3SlN/nwx5EDR8uB0mnSUPS+TV8SxW+252
|
|
||||||
IfGv8xtX4diEowVCCpkvqDkbEwWy4GQia1KHd0krfvi6Aha3NNNRkjyPUNrf42A5
|
|
||||||
lmqxp1PwKnb6IYEkoYYtehKARuFjY9d5rsaQSXzNXYnRqQYOzSB42wcxJCu/Lw2S
|
|
||||||
MfzY0b5j6PdVziBXQr/Bk8ge7sVT30oKD+LnKKL/CWHnFveykOAuvuihsD4VS1iB
|
|
||||||
1Ns2Pjdofzw7+OzlVWJ4SBlm6HPCXBSfg15jkXinDdU/lKT6Gv0n4Y4i3GWkdFKe
|
|
||||||
JuuDcvhM2dAl8PV9YrlaVK/1InHNb7jsksKLZ0MxOEj05QSOWT5kOAbQCRfKAc8/
|
|
||||||
S8kd48v9BSgC+PZjS6AG3+sM2YjwQvo=
|
|
||||||
=Ww/y
|
|
||||||
-----END PGP SIGNATURE-----
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
exec /bin/systemd-ask-password "Enter TLS private key passphrase for $1 ($2) : "
|
|
290
nginx.gpg
290
nginx.gpg
@ -1,290 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
yh4LsaVRdhbFe9aNd/O5iNgDcQtCUg==
|
|
||||||
=/pFc
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: GnuPG v1.4.11 (FreeBSD)
|
|
||||||
|
|
||||||
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
|
|
||||||
=Tavt
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: GnuPG v1.4.11 (FreeBSD)
|
|
||||||
|
|
||||||
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
|
|
||||||
CoHAyoqJeb/xLBwuKWg0/4U=
|
|
||||||
=iFlP
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
=t1B0
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,14 +0,0 @@
|
|||||||
%__nginxmods_requires() %{lua:
|
|
||||||
-- Match buildroot paths of the form
|
|
||||||
-- /PATH/OF/BUILDROOT/usr/lib/nginx/modules/ and
|
|
||||||
-- /PATH/OF/BUILDROOT/usr/lib64/nginx/modules/
|
|
||||||
-- generating a line of the form:
|
|
||||||
-- nginx(abi) = VERSION
|
|
||||||
local path = rpm.expand("%1")
|
|
||||||
if path:match("/usr/lib%d*/nginx/modules/.*") then
|
|
||||||
local requires = "nginx(abi) = " .. rpm.expand("%{_nginx_abiversion}")
|
|
||||||
print(requires)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
%__nginxmods_path ^%{_prefix}/lib(64)?/nginx/modules/.*\\.so$
|
|
41
sb.key
41
sb.key
@ -1,41 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: GnuPG v1.4.11 (FreeBSD)
|
|
||||||
|
|
||||||
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
|
|
||||||
CoHAyoqJeb/xLBwuKWg0/4U=
|
|
||||||
=iFlP
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
2
sources
2
sources
@ -1,2 +0,0 @@
|
|||||||
SHA512 (nginx-1.20.1.tar.gz) = 3d9fd4bf2740eaf20fcc3c77260a3556aaf9dff2879afc2dbb5fff364dea27313ffbc51d335e9fc9c0186a2a44dac055ef60fde0d411b8cf842fdf661478c961
|
|
||||||
SHA512 (nginx-1.20.1.tar.gz.asc) = 6e7dfaf199e9982faab265ada62a56861603499e03211d1792d9add5ac7bd971c9931b68b727fabdf7af66fcfb7b3e3dc2e9efa5e55b25b8186b7974f0f4823a
|
|
147
thresh.key
147
thresh.key
@ -1,147 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
=t1B0
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
Loading…
Reference in New Issue
Block a user