Skip to content

(可选)OpenSSL配置

OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其他目的使用。

注意:

虚谷数据库自V12.8.5版本起(之前版本不受影响),运行依赖于OpenSSL,请在安装部署前配置正确版本的OpenSSL。
如果您的服务器中已有符合版本要求的OpenSSL,则可跳过本章节。

版本需求

Linux

CPU架构发行版兼容版本推荐版本
X86Red Hat 7.91.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w
X86Red Hat 8.11.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w
X86Kylin V10-SP21.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w
X86Kylin V10-SP31.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w
ARMCentOS 7.91.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w
ARMCentOS 8.51.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w
ARMKylin V10-SP21.1.0 ~ 1.1.1w1.1.1 ~ 1.1.1w

Windows

Windows平台下,虚谷数据库附带了OpenSSL的依赖库,如果平台的OpenSSL不符合要求,可下载合适的OpenSSL发行包并使用。

说明:

  • OpenSSL 1.1.0到1.1.1w的任意版本均可,OpenSSL 1.1.1* 是LTS版本,推荐优先使用。
  • OpenSSL 1.1.0以下版本和OpenSSL 3.0.0以上版本,均无法使用。

安装OpenSSL

说明:

OpenSSL支持发行包安装和源码安装,请根据实际应用场景选择合适的方式安装。

OpenSSL发行包安装

请尝试从如下网站中下载并安装所需版本的OpenSSL发行包:
https://pkgs.org/search/?q=openssl
https://rpmfind.net/linux/rpm2html/search.php?query=openssl
https://ftp.debian.org/debian/pool/main/o/openssl/
https://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/?C=M;O=D

如未能找到所需的发行包,可尝试OpenSSL源码安装,源码安装可根据需求更灵活的选择OpenSSL版本。

OpenSSL源码安装

注意:

下述操作步骤展示的源码安装方式仅支持在Linux操作系统进行。

  1. https://openssl-library.org/source/old/index.html 下载所需版本的OpenSSL源码文件,格式为“tar.gz”。
  2. 执行命令tar -zxvf xxx.tar.gz,解压OpenSSL源码文件。
    其中“xxx”为OpenSSL版本号,例如:openssl-1.1.0b。
  3. 执行命令cd openssl-1.1.0b,进入源码目录。
  4. 执行命令./config --prefix=<your_path>,配置安装路径。
    “<your_path>”为自定义的安装路径。配置过程中可能会出现一些问题,可以根据实际出现的报错在搜索引擎中搜索或参考OpenSSL的官方文档进行解决。
  5. 执行命令make && make install,编译并安装OpenSSL。
    也可以选择先执行命令make,结束后在当前路径下可以看见编译产物,如“libcrypto.a”、“libcrypto.so”等,再执行命令make install,结束后在“--prefix”路径下可以看见安装后的内容,主要包含bin、include、lib三个目录,lib目录下的内容主要包含: `libcrypto.so`, `libcrypto.so.1.1`, `libcrypto.a`, `libssl.so`, `libssl.so.1.1`, `libssl.a`
  6. 配置环境变量,目前虚谷数据库主要依赖libcrypto.so.1.1动态库,因此根据当前操作系统的环境变量配置方式,可以考虑以下3种配置方法:
    • 方法一:配置 LD_LIBRARY_PATH。
      将安装目录下的lib目录,配置入LD_LIBRARY_PATH环境变量,可选择临时配置和持久化配置两种方式。
      • 临时配置:执行命令export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:openssl_lib_path,将libcrypto.so.1.1所在路径添加到LD_LIBRARY_PATH。该配置在终端退出后失效,新终端需要重新配置。
      • 持久化配置:执行命令export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:openssl_lib_path,写入“~/.bashrc”、“~/.bash_profile”或系统级别的“/etc/profile”,然后执行命令source ~/.bashrc保存并使配置生效(或使其他文件生效的对应操作)。该配置持久生效。
    • 方法二:拷贝动态库到系统默认路径。
      将安装目录下的lib目录中的libcrypto.so.1.1拷贝至环境中现有的环境变量路径下,如/user/lib64等。
    • 方法三:配置ld.so.conf.d。
      执行命令echo "openssl_lib_path" | sudo tee /etc/ld.so.conf.d/openssl_lib.conf,创建一个新的配置文件,然后执行命令sudo ldconfig。(注:此处“openssl_lib_path”为之前编译好的OpenSSL的lib的路径,“openssl_lib.conf”文件的名称任意,此处只是示例,文件名以.conf结尾即可)。

      注意:

      以上3种方式均可,但要重点注意,环境上原本可能存在自带的OpenSSL,尽量避免对原本的环境造成影响。

验证OpenSSL

版本

使用以下四个版本的OpenSSL进行测试,均可以正常链接、运行。

  • openssl-1.1.0b
  • openssl-1.1.1
  • openssl-1.1.1f
  • openssl-1.1.1w

动态链接

查看数据库依赖包, 可以看到正确链接到环境中的libcrypto.so.1.1。

shell
$ ldd ./xugu_linux_x86_64_20250327  
linux-vdso.so.1 (0x00007ffe160a8000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007feb24299000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007feb24294000)
libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007feb2428f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007feb2428a000)
libcrypto.so.1.1 => /lib/libcrypto.so.1.1 (0x00007feb23fa2000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007feb23d74000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007feb23c8d000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007feb23c6d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007feb23a44000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb242a7000)

功能

执行DBMS_CRYPTO包中的加解密、HASH、随机数等功能,功能可以正确执行,详细信息请参见DBMS_CRYPTO

环境升级

在CentOS 7.9环境中(默认OpenSSL版本为OpenSSL 1.0.2k)启动虚谷数据库,报错:

error while loading shared libraries: libcrypto.so.1.1: can not open shared object file: No such file or directory

将OpenSSL 1.1.1k版本的动态库复制到/usr/lib64/目录下,再次启动,可以正常链接到动态库。