#!/bin/bash

# 定义变量
OPENSSL_VERSION="1.1.1k"
# 使用你提供的下载地址
OPENSSL_SOURCE_URL="http://dw.chan.ink/组件源码/openssl-1.1.1k.tar.gz"
OPENSSL_INSTALL_DIR="/usr/local/openssl"

# 检查是否以 root 用户运行
if [ "$EUID" -ne 0 ]; then
    echo "请使用 root 用户运行此脚本。"
    exit 1
fi

# 安装依赖
echo "正在安装依赖..."
yum install -y wget gcc make perl-core zlib-devel

# 下载 OpenSSL 源码
echo "正在下载 OpenSSL ${OPENSSL_VERSION} 源码..."
wget "$OPENSSL_SOURCE_URL"
if [ $? -ne 0 ]; then
    echo "下载 OpenSSL 源码失败，请检查网络连接或源码地址。"
    exit 1
fi

# 解压源码
echo "正在解压 OpenSSL 源码..."
tar -zxvf openssl-${OPENSSL_VERSION}.tar.gz
if [ $? -ne 0 ]; then
    echo "解压 OpenSSL 源码失败。"
    exit 1
fi

# 进入解压目录
cd openssl-${OPENSSL_VERSION}

# 配置编译选项
echo "正在配置 OpenSSL 编译选项..."
./config --prefix=$OPENSSL_INSTALL_DIR --openssldir=$OPENSSL_INSTALL_DIR shared zlib
if [ $? -ne 0 ]; then
    echo "配置 OpenSSL 编译选项失败。"
    exit 1
fi

# 编译和安装
echo "正在编译和安装 OpenSSL..."
make
if [ $? -ne 0 ]; then
    echo "编译 OpenSSL 失败。"
    exit 1
fi
make install
if [ $? -ne 0 ]; then
    echo "安装 OpenSSL 失败。"
    exit 1
fi

# 配置系统使用新的 OpenSSL
echo "正在配置系统使用新的 OpenSSL..."
echo "$OPENSSL_INSTALL_DIR/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig -v

# 更新系统的 OpenSSL 软链接
echo "正在更新系统的 OpenSSL 软链接..."
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s $OPENSSL_INSTALL_DIR/bin/openssl /usr/bin/openssl

# 验证 OpenSSL 版本
echo "正在验证 OpenSSL 版本..."
openssl version

echo "OpenSSL ${OPENSSL_VERSION} 升级完成。"