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';,返回值应为ON或STRICT
额外注意事项
- MariaDB 10.1属于旧版本,虽然支持OpenSSL 1.1.1,但如果遇到编译兼容性问题,可以尝试更新到MariaDB 10.2及以上版本(对FIPS的支持更完善)
- 编译过程中如果出现链接错误,检查是否遗漏了依赖库,或者OpenSSL路径是否正确
- 确保编译时没有使用
WITH_SSL=bundled选项(这会使用MariaDB内置的OpenSSL版本,无法关联系统的FIPS库)
内容的提问来源于stack exchange,提问作者Franco Hernandez




