我正在使用 openssl-fips-2.0.12 构建 openssl-1.0.2f (我将在以下几行中讨论此配置,但是在在 HP-UX11.31 ( pa-risc2 ([HPE]: pa-risc1.1 pa-risc2.0))上,我将指定我尝试的所有配置。一切都很好,但是当我尝试使用它时(在FIPS模式下),它不起作用。
注意:鉴于cwd
设置为构建文件夹(而不是安装文件夹,其中 RPATH 指向),我需要指示链接器在哪里搜索libs(SHLIB_PATH
):
[%__OPENSSL_MACHINE_PROMPT%]> OPENSSL_FIPS=1 SHLIB_PATH=./lib ./bin/openssl version -a 2063867464:error:2D06B071:FIPS routines:FIPS_check_incore_fingerprint:fingerprint does not match segment aliasing:fips.c:224:
注意:我用一个有意义的占位符(名称以 __ OPENSSL 开头)替换它,而不是显示任何路径,包围%
个符号(相当于 Win env vars - 如果可能涉及任何实际的 Ux env变种,则不想造成混淆。)
这是“相同”命令的输出而没有设置FIPS(OPENSSL_FIPS=1
)模式:
[%__OPENSSL_MACHINE_PROMPT%]> SHLIB_PATH=./lib ./bin/openssl version -a OpenSSL 1.0.2f-fips 28 Jan 2016 built on: Fri Feb 26 09:53:34 2016 platform: hpux-parisc2-gcc options: bn(64,64) rc4(ptr,char) des(ptr,risc1,16,long) blowfish(idx) compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -DDSO_DL -fPIC -D_REENTRANT -march=2.0 -O3 -DB_ENDIAN -D_REENTRANT -I%__OPENSSL_BUILD_PATH%/include OPENSSLDIR: "%__OPENSSL_PREFIX_DIR%"
这种情况发生在我尝试运行它的所有机器上(包括我在其上构建的机器):
[%__OPENSSL_BUILD_MACHINE_PROMPT%]> uname -a HP-UX hpux1131 B.11.31 U 9000/800 629887774 unlimited-user license
gcc 版本(使用本机链接器( ld_pa )):
[%__OPENSSL_BUILD_MACHINE_PROMPT%]> gcc -v Using built-in specs. Target: hppa2.0w-hp-hpux11.31 Configured with: ../gcc-4.2.4/configure --disable-shared --with-gnu-as --with-as=%__GCC_PREFIX_PATH%/bin/as --with-ld=/bin/ld --disable-nls --enable-threads=posix --prefix=%__GCC_PREFIX_PATH% --with-local-prefix=%__GCC_PREFIX_PATH% Thread model: posix gcc version 4.2.4`
这是 openssl-fips-2.1.12 配置器的输出:
./config no-asm Operating system: 9000/800-hp-hpux1x Auto Configuring fipsonly Auto Configuring fipsonly Configuring for hpux-parisc2-gcc Auto Configuring fipsonly Configuring for hpux-parisc2-gcc no-asm [option] OPENSSL_NO_ASM no-bf [option] OPENSSL_NO_BF (skip dir) no-camellia [option] OPENSSL_NO_CAMELLIA (skip dir) no-cast [option] OPENSSL_NO_CAST (skip dir) no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) no-gmp [default] OPENSSL_NO_GMP (skip dir) no-idea [option] OPENSSL_NO_IDEA (skip dir) no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir) no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5 no-md2 [option] OPENSSL_NO_MD2 (skip dir) no-md5 [option] OPENSSL_NO_MD5 (skip dir) no-mdc2 [option] OPENSSL_NO_MDC2 (skip dir) no-rc2 [option] OPENSSL_NO_RC2 (skip dir) no-rc4 [option] OPENSSL_NO_RC4 (skip dir) no-rc5 [option] OPENSSL_NO_RC5 (skip dir) no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir) no-ripemd [option] OPENSSL_NO_RIPEMD (skip dir) no-seed [option] OPENSSL_NO_SEED (skip dir) no-srp [forced] OPENSSL_NO_SRP (skip dir) no-ssl2 [forced] OPENSSL_NO_SSL2 (skip dir) no-ssl3 [forced] OPENSSL_NO_SSL3 (skip dir) no-store [experimental] OPENSSL_NO_STORE (skip dir) no-tls1 [forced] OPENSSL_NO_TLS1 (skip dir) no-tlsext [forced] OPENSSL_NO_TLSEXT (skip dir) no-zlib [default] no-zlib-dynamic [default]
这是 openssl-1.0.2f 的:
./config fips shared --prefix=%__OPENSSL_PREFIX_DIR% no-rc5 no-mdc2 no-idea -fPIC no-asm --openssldir=%__OPENSSL_PREFIX_DIR%/openssl Operating system: 9000/800-hp-hpux1x Configuring for hpux-parisc2-gcc Configuring for hpux-parisc2-gcc no-asm [option] OPENSSL_NO_ASM no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) no-gmp [default] OPENSSL_NO_GMP (skip dir) no-idea [option] OPENSSL_NO_IDEA (skip dir) no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir) no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5 no-libunbound [experimental] OPENSSL_NO_LIBUNBOUND (skip dir) no-md2 [default] OPENSSL_NO_MD2 (skip dir) no-mdc2 [option] OPENSSL_NO_MDC2 (skip dir) no-rc5 [option] OPENSSL_NO_RC5 (skip dir) no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir) no-rsax [forced] OPENSSL_NO_RSAX (skip dir) no-sctp [default] OPENSSL_NO_SCTP (skip dir) no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir) no-store [experimental] OPENSSL_NO_STORE (skip dir) no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir) no-zlib [default] no-zlib-dynamic [default]
重要提示: 我已经说明了我在 HP-UX11.31上使用 openssl-1.0.2f + openssl-fips-2.0.12 的问题 om PA-RISC2 。我还尝试了什么:
注意:在调试期间,我还修改了 fips_premain.c (和其他人)和(令人震惊的 :)),由 fips_premain_dso 生成的指纹(使用-DFINGERPRINT_PREMAIN_DSO_LOAD
编译)并且在运行时计算的指纹不匹配!我还抛弃了计算指纹的内存区域(原始或十六进制格式),并且(当然)它有所不同(但我不知道为什么)。
鉴于它的工作原理(或它应该可以工作) - 即使没有在 pa-risc 上进行测试,但仅在 IA64 上进行测试 - 并且广泛 Google 搜索没有透露真正相关的内容,我99.99确定它与我环境中的机器有关。
但是,有人可以给我一些指示吗?
@ EDIT0 :我提到我在 IA64上重现了同样的问题;这很可能是一个错误。我最近(有一台机器)在 HP-UX11.23 IA64 上构建它,它工作正常。唯一的问题是跨架构兼容性(构建/运行)只是一种方式: PA-RISC - > IA64