Skip to content

Commit 7f10892

Browse files
ghedoagentzh
authored andcommitted
feature: added support for OpenSSL 1.1.0.
thanks polishment work from Dejiang Zhu and Zexuan Luo. Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
1 parent e51a473 commit 7f10892

9 files changed

+150
-139
lines changed

.travis.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ env:
4141
- OPENSSL_PREFIX=/opt/ssl
4242
- OPENSSL_LIB=$OPENSSL_PREFIX/lib
4343
- OPENSSL_INC=$OPENSSL_PREFIX/include
44-
- OPENSSL_VER=1.0.2k
4544
- LIBDRIZZLE_PREFIX=/opt/drizzle
4645
- LIBDRIZZLE_INC=$LIBDRIZZLE_PREFIX/include/libdrizzle-1.0
4746
- LIBDRIZZLE_LIB=$LIBDRIZZLE_PREFIX/lib
4847
- LD_LIBRARY_PATH=$LUAJIT_LIB:$LD_LIBRARY_PATH
4948
- DRIZZLE_VER=2011.07.21
5049
- TEST_NGINX_SLEEP=0.006
5150
matrix:
52-
- NGINX_VERSION=1.13.6
51+
- NGINX_VERSION=1.13.6 OPENSSL_VER=1.0.2k OPENSSL_PATCH_VER=1.0.2h
52+
#- NGINX_VERSION=1.13.6 OPENSSL_VER=1.1.0c OPENSSL_PATCH_VER=1.1.0c
5353

5454
services:
5555
- memcache
@@ -112,9 +112,8 @@ script:
112112
- cd ..
113113
- tar zxf download-cache/openssl-$OPENSSL_VER.tar.gz
114114
- cd openssl-$OPENSSL_VER/
115-
- if [ ! -f ../download-cache/openssl-1.0.2h-sess_set_get_cb_yield.patch ]; then wget -P ../download-cache https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-1.0.2h-sess_set_get_cb_yield.patch; fi
116-
- patch -p1 < ../download-cache/openssl-1.0.2h-sess_set_get_cb_yield.patch
117-
- ./config shared --prefix=$OPENSSL_PREFIX -DPURIFY > build.log 2>&1 || (cat build.log && exit 1)
115+
- patch -p1 < ../../openresty/patches/openssl-$OPENSSL_PATCH_VER-sess_set_get_cb_yield.patch
116+
- ./config no-threads shared enable-ssl3 enable-ssl3-method -g --prefix=$OPENSSL_PREFIX -DPURIFY > build.log 2>&1 || (cat build.log && exit 1)
118117
- make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
119118
- sudo make PATH=$PATH install_sw > build.log 2>&1 || (cat build.log && exit 1)
120119
- cd ..

src/ngx_http_lua_socket_tcp.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1368,9 +1368,8 @@ ngx_http_lua_socket_tcp_sslhandshake(lua_State *L)
13681368
return 2;
13691369
}
13701370

1371-
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
1372-
"lua ssl set session: %p:%d",
1373-
*psession, (*psession)->references);
1371+
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
1372+
"lua ssl set session: %p", *psession);
13741373
}
13751374
}
13761375

@@ -1635,9 +1634,8 @@ ngx_http_lua_ssl_handshake_retval_handler(ngx_http_request_t *r,
16351634
} else {
16361635
*ud = ssl_session;
16371636

1638-
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
1639-
"lua ssl save session: %p:%d", ssl_session,
1640-
ssl_session->references);
1637+
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
1638+
"lua ssl save session: %p", ssl_session);
16411639

16421640
/* set up the __gc metamethod */
16431641
lua_pushlightuserdata(L, &ngx_http_lua_ssl_session_metatable_key);
@@ -5444,9 +5442,8 @@ ngx_http_lua_ssl_free_session(lua_State *L)
54445442

54455443
psession = lua_touserdata(L, 1);
54465444
if (psession && *psession != NULL) {
5447-
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
5448-
"lua ssl free session: %p:%d", *psession,
5449-
(*psession)->references);
5445+
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
5446+
"lua ssl free session: %p", *psession);
54505447

54515448
ngx_ssl_free_session(*psession);
54525449
}

src/ngx_http_lua_ssl_ocsp.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,11 @@ ngx_http_lua_ffi_ssl_set_ocsp_status_resp(ngx_http_request_t *r,
468468
return NGX_ERROR;
469469
}
470470

471+
#ifdef SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE
472+
if (SSL_get_tlsext_status_type(ssl_conn) == -1) {
473+
#else
471474
if (ssl_conn->tlsext_status_type == -1) {
475+
#endif
472476
dd("no ocsp status req from client");
473477
return NGX_DECLINED;
474478
}

src/ngx_http_lua_ssl_session_fetchby.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,11 @@ ngx_http_lua_ssl_sess_fetch_by_lua(ngx_conf_t *cf, ngx_command_t *cmd,
171171

172172
/* cached session fetching callback to be set with SSL_CTX_sess_set_get_cb */
173173
ngx_ssl_session_t *
174-
ngx_http_lua_ssl_sess_fetch_handler(ngx_ssl_conn_t *ssl_conn, u_char *id,
175-
int len, int *copy)
174+
ngx_http_lua_ssl_sess_fetch_handler(ngx_ssl_conn_t *ssl_conn,
175+
#if OPENSSL_VERSION_NUMBER >= 0x10100003L
176+
const
177+
#endif
178+
u_char *id, int len, int *copy)
176179
{
177180
lua_State *L;
178181
ngx_int_t rc;
@@ -287,7 +290,7 @@ ngx_http_lua_ssl_sess_fetch_handler(ngx_ssl_conn_t *ssl_conn, u_char *id,
287290
cctx->exit_code = 1; /* successful by default */
288291
cctx->connection = c;
289292
cctx->request = r;
290-
cctx->session_id.data = id;
293+
cctx->session_id.data = (u_char *) id;
291294
cctx->session_id.len = len;
292295
cctx->entered_sess_fetch_handler = 1;
293296
cctx->done = 0;

src/ngx_http_lua_ssl_session_fetchby.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ char *ngx_http_lua_ssl_sess_fetch_by_lua_block(ngx_conf_t *cf,
2525
ngx_command_t *cmd, void *conf);
2626

2727
ngx_ssl_session_t *ngx_http_lua_ssl_sess_fetch_handler(
28-
ngx_ssl_conn_t *ssl_conn, u_char *id, int len, int *copy);
28+
ngx_ssl_conn_t *ssl_conn,
29+
#if OPENSSL_VERSION_NUMBER >= 0x10100003L
30+
const
31+
#endif
32+
u_char *id, int len, int *copy);
2933
#endif
3034

3135

src/ngx_http_lua_ssl_session_storeby.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ int
172172
ngx_http_lua_ssl_sess_store_handler(ngx_ssl_conn_t *ssl_conn,
173173
ngx_ssl_session_t *sess)
174174
{
175+
const u_char *sess_id;
176+
unsigned int sess_id_len;
175177
lua_State *L;
176178
ngx_int_t rc;
177179
ngx_connection_t *c, *fc = NULL;
@@ -247,11 +249,13 @@ ngx_http_lua_ssl_sess_store_handler(ngx_ssl_conn_t *ssl_conn,
247249
}
248250
}
249251

252+
sess_id = SSL_SESSION_get_id(sess, &sess_id_len);
253+
250254
cctx->connection = c;
251255
cctx->request = r;
252256
cctx->session = sess;
253-
cctx->session_id.data = sess->session_id;
254-
cctx->session_id.len = sess->session_id_length;
257+
cctx->session_id.data = (u_char *) sess_id;
258+
cctx->session_id.len = sess_id_len;
255259
cctx->done = 0;
256260

257261
dd("setting cctx");

0 commit comments

Comments
 (0)