服务器升级openSSL和nginx开启TLSv1.3

openssl升级

  1. 查看openssl版本openssl version,一般腾讯云为1.0.2k版本

  2. 到官网www.openssl.org查看最新版本openssl,现在最新为1.1.1h版

  3. 下载最新的openssl

    wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz

  4. 解压并编译安装

    tar -zxvf openssl-1.1.1h.tar.gz

    cd openssl-1.1.1h

    ./config --prefix=/usr/local/openssl #如果此步骤报错,需要安装perl以及gcc包

    make && make install

    mv /usr/bin/openssl /usr/bin/openssl.bak

    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

    ldconfig -v # 设置生效

  5. 再次查看openssl版本

    openssl version

升级nginx

  1. wget http://nginx.org/download/nginx-1.18.0.tar.gz

  2. tar -zxvf nginx-1.18.0.tar.gz

  3. cd nginx-1.18.0/

  4. ./configure --prefix=/usr/local/nginx

  5. ./configure --with-http_ssl_module

  6. ./configure --with-openssl=/usr/local/openssl #安装openssl的位置

./configure --prefix=/usr/local/nginx  --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-file-aio  --with-openssl=/usr/local/openssl
  1. make 只升级Nginx的话只需make

  2. cp objs/nginx /usr/local/nginx/sbin/nginx

编译小错误

/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.18.0’
make: *** [build] Error 2
根据报错信息我们知道,出错是因为Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,其实我们打开/usr/local/ssl/这个目录可以发现这个目录下是没有.openssl目录的,因此我们修改Nginx编译时对openssl的路径选择就可以解决这个问题了
解决方案:
打开nginx源文件下的/usr/local/src/nginx-1.9.9/auto/lib/openssl/conf文件:
找到这么一段代码:

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"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

修改成以下代码:

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"

然后再进行Nginx的编译安装即可

个人技术小博客milktop.cn


版权声明:本文为weixin_43153854原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。