Nginxモジュールのインストール、バグ修正
第 1 章Nginx インストール後の ssl モジュールの追加
第 2 章Nginx シールド ヘッダー攻撃
第 3 章openssl アップグレード (SSL/TLS LogJam ミドルマン セキュリティ制限バイパスの脆弱性 (CVE-2015-4000))
記事ディレクトリ
序文
公開キーが弱すぎて修正できない
1. openssl がアップグレードされておらず、nginx が –with-http_ssl_module モジュールでコンパイルされているかどうか
2. openssl のアップグレード後、nginx が –with-http_ssl_module --with-openssl= の絶対パスでコンパイルされるソースパッケージ
1. openssl バージョンがアップグレードされていない
アップグレードされていない openssl バージョン 1.0.2k
[root@h5 /]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
nginxは正常にコンパイルされます
[root@h5 sbin]# ./nginx -V
nginx version: nginx/1.20.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_ssl_module
2. openssl バージョンのアップグレード (openssl のアップグレードを確認するには opensslをアップグレードします)
アップグレードされた openssl
[root@h5 openssl-1.1.1o]# openssl version
OpenSSL 1.1.1o 3 May 2022
ソースコードからnginxをコンパイルする場合、opensslソースコードの絶対パスを追加します
[root@h5 nginx-1.20.0]# ./configure --with-http_ssl_module --with-openssl=/u01/openssl-1.1.1o/ ##编译nginx,直接用源码包目录后期编译不会有报错。
make をコンパイルしてインストールすると、「そのようなファイルまたはディレクトリはありません」というエラーが報告されます。
[root@h5 nginx-1.20.2]# make
/bin/sh:行2: ./config: 没有那个文件或目录
make[1]: *** [/usr/include/openssl/.openssl/include/openssl/ssl.h] 错误 127
make[1]: 离开目录“/u01/nginx/nginx-1.20.2”
make: *** [build] 错误 2
解決策: 次の conf から /.openssl/ を削除します。
原有:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
修改后:
[root@h5 nginx-1.8.0]# vim auto/lib/openssl/conf
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
ソース パッケージのインストール中に次のエラーが報告された場合は、openssl と nginx のバージョンが一致していないことを意味します。
src/event/ngx_event_openssl.c: 在函数‘ngx_ssl_init’中:
src/event/ngx_event_openssl.c:112:5: 错误:不建议使用‘OPENSSL_config’(声明于 /u01/openssl-1.1.1o//.openssl/include/openssl/conf.h:91) [-Werror=deprecated-declarations]
OPENSSL_config(NULL);
^
src/event/ngx_event_openssl.c: 在函数‘ngx_ssl_rsa512_key_callback’中:
src/event/ngx_event_openssl.c:753:9: 错误:不建议使用‘RSA_generate_key’(声明于 /u01/openssl-1.1.1o//.openssl/include/openssl/rsa.h:235) [-Werror=deprecated-declarations]
key = RSA_generate_key(512, RSA_F4, NULL, NULL);
^
src/event/ngx_event_openssl.c: 在函数‘ngx_ssl_dhparam’中:
src/event/ngx_event_openssl.c:943:11: 错误:提领指向不完全类型的指针
dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL);