Skip to content

Commit cdab044

Browse files
committed
nginx-ssl-ja3: nginx patch checks OpenSSL version
1 parent 06e5427 commit cdab044

File tree

1 file changed

+39
-26
lines changed

1 file changed

+39
-26
lines changed
Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
diff -r a2f5e25d6a28 src/event/ngx_event_openssl.c
2-
--- a/src/event/ngx_event_openssl.c Thu Aug 10 22:21:23 2017 +0300
3-
+++ b/src/event/ngx_event_openssl.c Sat Aug 19 23:03:53 2017 +0000
4-
@@ -1221,6 +1221,51 @@
1+
diff -r 2e8de3d81783 src/event/ngx_event_openssl.c
2+
--- a/src/event/ngx_event_openssl.c Tue Aug 22 17:36:12 2017 +0300
3+
+++ b/src/event/ngx_event_openssl.c Tue Aug 22 20:20:30 2017 +0000
4+
@@ -1221,6 +1221,60 @@
55
}
66

77

8+
+#if OPENSSL_VERSION_NUMBER >= 0x10101000L
9+
+
810
+int
911
+ngx_SSL_early_cb_fn(SSL *s, int *al, void *arg) {
1012
+
@@ -14,6 +16,7 @@ diff -r a2f5e25d6a28 src/event/ngx_event_openssl.c
1416
+ ngx_connection_t *c;
1517
+
1618
+ c = arg;
19+
+
1720
+ if (c == NULL) {
1821
+ return 1;
1922
+ }
@@ -23,55 +26,65 @@ diff -r a2f5e25d6a28 src/event/ngx_event_openssl.c
2326
+ }
2427
+
2528
+ c->ssl->client_extensions_size = 0;
29+
+ c->ssl->client_extensions = NULL;
2630
+
2731
+ got_extensions = SSL_early_get1_extensions_present(s,
2832
+ &ext_out,
2933
+ &ext_len);
30-
+ if (got_extensions) {
31-
+ if (ext_out && ext_len > 0) {
32-
+ c->ssl->client_extensions_size = ext_len;
33-
+
34-
+ c->ssl->client_extensions =
35-
+ ngx_palloc(c->pool, sizeof(int) * ext_len);
36-
+ if (c->ssl->client_extensions == NULL) {
37-
+ OPENSSL_free(ext_out);
38-
+ return 1;
39-
+ }
40-
+
41-
+ ngx_memcpy(c->ssl->client_extensions,
42-
+ ext_out,
43-
+ sizeof(int) * ext_len);
44-
+
45-
+ OPENSSL_free(ext_out);
46-
+ }
34+
+ if (!got_extensions) {
35+
+ return 1;
36+
+ }
37+
+
38+
+ if (!ext_out) {
39+
+ return 1;
40+
+ }
41+
+
42+
+ if (!ext_len) {
43+
+ return 1;
4744
+ }
4845
+
46+
+ c->ssl->client_extensions = ngx_palloc(c->pool, sizeof(int) * ext_len);
47+
+ if (c->ssl->client_extensions == NULL) {
48+
+ OPENSSL_free(ext_out);
49+
+ return 1;
50+
+ }
51+
+
52+
+ c->ssl->client_extensions_size = ext_len;
53+
+ ngx_memcpy(c->ssl->client_extensions, ext_out, sizeof(int) * ext_len);
54+
+
55+
+ OPENSSL_free(ext_out);
56+
+
4957
+ return 1;
5058
+}
59+
+#endif
5160
+
5261
+
5362
ngx_int_t
5463
ngx_ssl_handshake(ngx_connection_t *c)
5564
{
56-
@@ -1229,6 +1274,8 @@
65+
@@ -1229,6 +1283,10 @@
5766

5867
ngx_ssl_clear_error(c->log);
5968

69+
+#if OPENSSL_VERSION_NUMBER >= 0x10101000L
6070
+ SSL_CTX_set_early_cb(c->ssl->session_ctx, ngx_SSL_early_cb_fn, c);
71+
+#endif
6172
+
6273
n = SSL_do_handshake(c->ssl->connection);
6374

6475
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_do_handshake: %d", n);
65-
diff -r a2f5e25d6a28 src/event/ngx_event_openssl.h
66-
--- a/src/event/ngx_event_openssl.h Thu Aug 10 22:21:23 2017 +0300
67-
+++ b/src/event/ngx_event_openssl.h Sat Aug 19 23:03:53 2017 +0000
68-
@@ -85,6 +85,9 @@
76+
diff -r 2e8de3d81783 src/event/ngx_event_openssl.h
77+
--- a/src/event/ngx_event_openssl.h Tue Aug 22 17:36:12 2017 +0300
78+
+++ b/src/event/ngx_event_openssl.h Tue Aug 22 20:20:30 2017 +0000
79+
@@ -85,6 +85,11 @@
6980
unsigned no_wait_shutdown:1;
7081
unsigned no_send_shutdown:1;
7182
unsigned handshake_buffer_set:1;
7283
+
84+
+#if OPENSSL_VERSION_NUMBER >= 0x10101000L
7385
+ size_t client_extensions_size;
7486
+ int *client_extensions;
87+
+#endif
7588
};
7689

7790

0 commit comments

Comments
 (0)