(可选)OpenSSL配置
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其他目的使用。
注意:
虚谷数据库自V12.8.5版本起(之前版本不受影响),运行依赖于OpenSSL,请在安装部署前配置正确版本的OpenSSL。
如果您的服务器中已有符合版本要求的OpenSSL,则可跳过本章节。
版本需求
Linux
CPU架构 | 发行版 | 兼容版本 | 推荐版本 |
---|---|---|---|
X86 | Red Hat 7.9 | 1.1.0 ~ 1.1.1w | 1.1.1 ~ 1.1.1w |
X86 | Red Hat 8.1 | 1.1.0 ~ 1.1.1w | 1.1.1 ~ 1.1.1w |
X86 | Kylin V10-SP2 | 1.1.0 ~ 1.1.1w | 1.1.1 ~ 1.1.1w |
X86 | Kylin V10-SP3 | 1.1.0 ~ 1.1.1w | 1.1.1 ~ 1.1.1w |
ARM | CentOS 7.9 | 1.1.0 ~ 1.1.1w | 1.1.1 ~ 1.1.1w |
ARM | CentOS 8.5 | 1.1.0 ~ 1.1.1w | 1.1.1 ~ 1.1.1w |
ARM | Kylin V10-SP2 | 1.1.0 ~ 1.1.1w | 1.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操作系统进行。
- 从https://openssl-library.org/source/old/index.html 下载所需版本的OpenSSL源码文件,格式为“tar.gz”。
- 执行命令
tar -zxvf xxx.tar.gz
,解压OpenSSL源码文件。
其中“xxx”为OpenSSL版本号,例如:openssl-1.1.0b。 - 执行命令
cd openssl-1.1.0b
,进入源码目录。 - 执行命令
./config --prefix=<your_path>
,配置安装路径。
“<your_path>”为自定义的安装路径。配置过程中可能会出现一些问题,可以根据实际出现的报错在搜索引擎中搜索或参考OpenSSL的官方文档进行解决。 - 执行命令
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`
- 配置环境变量,目前虚谷数据库主要依赖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,尽量避免对原本的环境造成影响。
- 方法一:配置 LD_LIBRARY_PATH。
验证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/目录下,再次启动,可以正常链接到动态库。