NGINX、OPENSSH升级(带OPENSSL)

公司有项目需要升级服务器上的服务,其中比较复杂的是nginx和openssh这两个。

原版本为NGINX 1.6.1 openssh 7.6 ,升级为ngxin 1.16.1 openssh 8.0p1。

一、NGINX升级

1.1 下载Nginx

http://nginx.org/en/download.html上下载最新的Stable version

Snipaste_2019-10-15_14-53-22.md.png

1.2 上传到服务器,并进入相应的目录,解压。如:

cd /opt/

tar zxvf nginx-1.16.0.tar.gz

cd nginx-1.16.0

1.3 编译并进行安装

./configure 或者 ./configure --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0h/ssl

make

make install

1.4 重启nginx服务

/usr/local/nginx/sbin/nginx -s stop

/usr/local/nginx/sbin/nginx

1.5 至此nginx安装完毕,验证命令为:

curl -I 127.0.0.1

Snipaste_2019-10-15_15-38-06.png

二、openssl升级

在编译openssh的过程中,有可能会遇上openssl版本太老,需要升级openssl的版本。

2.1 下载地址:

下载最新版的openssl,地址为:https://www.openssl.org/source/

注意:下载的时候需要看清楚openssl版本,目前的版本有:1.0、1.1.0、1.1.1和2.0,需要对应上。

Snipaste_2019-10-15_16-37-29.md.png

2.2 上传到服务器,并进入相应的目录,解压。如:

cd /opt/

tar zxvf openssl-1.0.2t.tar.gz

cd openssl-1.0.2t.tar.gz

2.3 编译并进行安装

./config --prefix=/usr/local/openssl shared zlib
make depend
make && make install

2.4 备份当前openssl:

mv /usr/local/openssl /usr/local/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

2.5、配置使用新版本:

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

2.6、更新动态链接库数据:

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

2.7、重新加载动态链接库

ldconfig -v

2.8、重新查看版本号

ssh -V

三、openssh升级

注意:升级ssh有风险,如果升级错了,服务器就再也连不上了,建议先安装telnet服务,具体办法自行百度。如果make出错,千万别make install。保险起见,可以在升级之前多开几个ssh窗口,然后每个窗口ping 127.0.0.1,防止自动断开,假如升级失败,之前打开的ssh窗口是不会断开的。

3.1 下载最新版的openssh

地址为:https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

Snipaste_2019-10-15_16-09-40f6a58cec1e255e06.md.png

3.2 上传到服务器,并进入相应的目录,解压。如:

cd /opt/
tar zxvf openssh-8.0p1.tar.gz
cd openssh-8.0p1

3.3 编译并进行安装,命令如下:

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-openssl=/usr/local/openssl-1.1.0h/ssl
make
make install

备注:

【--with-http_ssl_module 使得nginx支持ssl模块  --with-openssl指定安装目录,通常两个都加上】
详细参数见:参考文献1。

3.4、 执行完上面的命令,如果没报错,就是完成安装了,然后需要重启服务,命令如下:

service sshd restart

切记:看清楚没有报错再重启。

3.5、验证方法:在服务器上执行telnet 127.0.0.1 22,如果显示的版本号是最新的,就对了

11111111111.png

至此,Nginx、openssh的升级全部结束。

出现的问题:

1、

在nginx的./configure --with-http_ssl_module的过程中,出现了如下报错:

Snipaste_2019-10-15_15-09-46.md.png

error: the HTTP rewrite module requires the PCRE library.

安装pcre-devel解决问题

下载

wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz

解压安装包:

tar -zxvf pcre-8.40.tar.gz

进入安装包目录

cd pcre-8.40

编译安装

./configure
make && make install

查看pcre版本

rpm -qa pcre

2、

编译nginx过程中出现如下错误

Snipaste_2019-10-15_17-20-18.md.png

解决方案:

   打开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的编译安装即可。

3、

在编译ssl的过程中,有可能出现证书文件权限过大的问题:

Snipaste_2019-09-27_12-04-14.md.png

利用chmod命令将权限修改为600即可,如:chmod -R 600 文件名

详见,参考文档5。

参考文档:

1、解决nginx集成本地ssl:https://blog.51cto.com/zhanjun/2097178

2、解决SSL编译报错:https://www.cnblogs.com/huanhang/p/7580843.html

3、SSL升级:https://www.cnblogs.com/caibao666/p/9698842.html

4、SSH升级:https://www.cnblogs.com/zjd1396/p/10137067.html

5、证书权限过大:https://blog.csdn.net/pansanday/article/details/80776079

Last modification:October 22nd, 2019 at 03:19 pm
如果觉得我的文章对你有用,请随意赞赏