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

编译OpenSSL 1.0.2h(含FIPS模块)时配置参数报错求助

解决OpenSSL 1.0.2h + FIPS 2.0.12编译参数错误问题

首先得明确:OpenSSL的config参数在不同小版本间存在差异,1.0.2h支持的参数和1.0.2n并不完全一致,这是你遇到报错的核心原因。下面是针对你的需求(满足Common Criteria要求,集成FIPS,禁用指定套件、仅保留TLS1.2)的修正方案:

一、先确保FIPS模块编译安装正确

你的FIPS编译逻辑没问题,但建议指定安装路径,避免后续OpenSSL查找模块时出错:

root@cc3:/home/openssl# tar -xvf openssl-fips-2.0.12.tar.gz
root@cc3:/home/openssl# cd openssl-fips-2.0.12
root@cc3:/home/openssl/openssl-fips-2.0.12# ./config --prefix=/home/openssl/local/fips -d
root@cc3:/home/openssl/openssl-fips-2.0.12# make && make install

二、修正OpenSSL主程序的编译参数

针对1.0.2h的参数兼容性,调整后的命令如下(关键调整见下方说明):

root@cc3:/home/openssl# tar -xvf openssl-1.0.2h.tar.gz
root@cc3:/home/openssl# cd openssl-1.0.2h
root@cc3:/home/openssl/openssl-1.0.2h# ./config fips \
--with-fipslibdir=/home/openssl/local/fips/lib \
no-ssl2 no-ssl3 no-tls1 no-tls1_1 \
no-camellia no-ecdh no-dhe no-dsa \
no-psk no-idea no-seed no-rc4 no-deprecated no-des \
--prefix=/home/openssl/local
root@cc3:/home/openssl/openssl-1.0.2h# make depend && make && make install

参数调整核心说明:

  1. 移除/修正无效参数

    • 删掉no-ecdhe:1.0.2h没有这个独立参数,ECDHE属于ECDH套件的分支,禁用no-ecdh会同时禁用ECDHE,刚好满足你的需求。
    • 删掉no-dh:添加此参数会触发编译报错,因为FIPS 2.0.12模块依赖DH核心算法(Common Criteria认证通常也允许基础DH算法),保留no-dhe即可禁用DHE密钥交换套件。
    • 修正拼写错误:把no-camelia改为正确的no-camellia
  2. 精准控制协议版本
    除了禁用SSLv2/SSLv3,新增no-tls1 no-tls1_1来禁用TLS1.0和TLS1.1,确保仅保留TLS1.2(1.0.2h默认支持TLS1.2,无需额外开启)。

  3. 明确FIPS模块路径
    添加--with-fipslibdir指定FIPS库的安装目录,避免OpenSSL自动查找时出现路径匹配问题。

三、编译后验证配置

安装完成后,用以下命令确认是否符合要求:

# 检查禁用的协议(无输出则说明已禁用)
/home/openssl/local/bin/openssl ciphers -v | grep -E "(SSLv2|SSLv3|TLSv1|TLSv1.1)"

# 检查禁用的套件(无输出则说明已禁用)
/home/openssl/local/bin/openssl ciphers -v | grep -E "(ECDHE|DHE|DSA|DES|RC4|IDEA|SEED|CAMELLIA)"

# 验证FIPS模式是否开启(输出应包含OPENSSL_FIPS=1)
/home/openssl/local/bin/openssl version -f

四、额外优化建议

如果需要更严格的套件管控(比如仅保留Common Criteria认证的FIPS套件),可以修改/home/openssl/local/ssl/openssl.cnf,在[system_default_sect]中添加:

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = FIPS@SECLEVEL=2

这样运行时会强制使用符合FIPS安全等级2的套件列表。

内容的提问来源于stack exchange,提问作者Hussain Ali Akbar

火山引擎 最新活动