无法在HP-UX上构建支持FIPS的OpenSSL

时间:2016-02-27 01:00:22

标签: unix gcc build openssl hp-ux

我正在使用 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 。我还尝试了什么:

  • openssl-1.0.1 X (其中 X = [e..p] )+ < EM>的OpenSSL-FIPS-2.0.5
  • HP-UX11.31 HP-UX11.11 PA-RISC2
  • no-asm 配置标志已指定/未指定

注意:在调试期间,我还修改了 fips_premain.c (和其他人)和(令人震惊的 :)),由 fips_premain_dso 生成的指纹(使用-DFINGERPRINT_PREMAIN_DSO_LOAD编译)并且在运行时计算的指纹不匹配!我还抛弃了计算指纹的内存区域(原始或十六进制格式),并且(当然)它有所不同(但我不知道为什么)。

鉴于它的工作原理(或它应该可以工作) - 即使没有在 pa-risc 上进行测试,但仅在 IA64 上进行测试 - 并且广泛 Google 搜索没有透露真正相关的内容,我99.99确定它与我环境中的机器有关。

但是,有人可以给我一些指示吗?

@ EDIT0 :我提到我在 IA64上重现了同样的问题;这很可能是一个错误。我最近(有一台机器)在 HP-UX11.23 IA64 上构建它,它工作正常。唯一的问题是跨架构兼容性(构建/运行)只是一种方式: PA-RISC - &gt; IA64

0 个答案:

没有答案