You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 18.04.6服务器上MariaDB 10.1.45社区版配置OpenSSL FIPS库失败问题求助

解决MariaDB 10.1.45在Ubuntu 18.04上使用OpenSSL FIPS库的问题

首先明确一点:MariaDB社区版是支持OpenSSL FIPS模式的,但需要满足两个核心条件:一是MariaDB编译时链接到了启用FIPS认证的OpenSSL库,二是系统层面的FIPS模式已正确开启。你遇到的问题,核心原因是当前运行的MariaDB实例(不管是仓库安装还是自行编译的版本)都没有关联到你安装的1.1.1版本FIPS OpenSSL,而是默认使用了系统自带的1.0.2n版本。

下面是具体的解决步骤:

1. 先确认系统FIPS环境的有效性

虽然你已经确认/proc/sys/crypto/fips_enabled为1,但还是要额外验证OpenSSL的FIPS模块是否正常加载:

  • 运行命令:openssl version -f,查看输出中的OPENSSLDIR是否指向包含FIPS模块的目录(通常是/usr/lib/ssl或对应FIPS安装路径)
  • 执行openssl fipsinstall -check,如果返回"FIPS mode is enabled"或类似验证通过的提示,说明系统层面的FIPS配置是正常的。

2. 重新编译MariaDB,指定链接FIPS版OpenSSL

官方仓库的MariaDB包是基于Ubuntu 18.04默认的OpenSSL 1.0.2编译的,所以无法直接切换到你安装的1.1.1 FIPS版本,必须手动编译源码并指定正确的OpenSSL路径:

步骤1:安装编译依赖

确保安装了所有必要的编译工具和依赖库,尤其是FIPS版的libssl-dev

sudo apt-get install build-essential cmake libssl-dev libncurses5-dev libjemalloc-dev zlib1g-dev

步骤2:下载并解压MariaDB 10.1.45源码

从官方渠道下载对应版本的源码包,解压后进入源码目录:

wget https://downloads.mariadb.org/f/mariadb-10.1.45/source/mariadb-10.1.45.tar.gz
tar -xzf mariadb-10.1.45.tar.gz
cd mariadb-10.1.45

步骤3:用CMake指定OpenSSL路径编译

关键是要告诉CMake使用系统中安装的FIPS版OpenSSL,而不是内置的或旧版本。根据你的OpenSSL安装路径,调整以下命令中的路径参数:

cmake . \
  -DWITH_SSL=system \
  -DCMAKE_PREFIX_PATH=/usr/lib/ssl \
  -DOPENSSL_INCLUDE_DIR=/usr/include/openssl \
  -DOPENSSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.so

注意:如果你的FIPS版OpenSSL安装在非默认目录(比如/opt/openssl-fips),需要把上述路径替换为实际的安装路径。

步骤4:编译并安装

make -j$(nproc)
sudo make install

3. 配置MariaDB启用FIPS模式

编译安装完成后,修改MariaDB的配置文件(通常是/etc/my.cnf/etc/mysql/my.cnf),添加以下配置项:

[mysqld]
ssl_fips_mode = ON

然后重启MariaDB服务:

sudo systemctl restart mariadb

4. 验证配置结果

登录MariaDB后,运行以下命令确认:

  • 查看SSL库版本:SHOW VARIABLES LIKE 'version_ssl_library';,此时应该显示你安装的OpenSSL 1.1.1 FIPS版本
  • 查看FIPS模式状态:SHOW VARIABLES LIKE 'ssl_fips_mode';,返回值应为ONSTRICT

额外注意事项

  • MariaDB 10.1属于旧版本,虽然支持OpenSSL 1.1.1,但如果遇到编译兼容性问题,可以尝试更新到MariaDB 10.2及以上版本(对FIPS的支持更完善)
  • 编译过程中如果出现链接错误,检查是否遗漏了依赖库,或者OpenSSL路径是否正确
  • 确保编译时没有使用WITH_SSL=bundled选项(这会使用MariaDB内置的OpenSSL版本,无法关联系统的FIPS库)

内容的提问来源于stack exchange,提问作者Franco Hernandez

火山引擎 最新活动