我正在使用openssl-fips-ecp-2.0.9和openssl-1.0.1j分别为FIPS对象模块和FIPS兼容的OpenSSL构建。
其中FIPS编译成功。但是根据User Guide,使用./config添加fips选项会出错:
march=mips32 -fomit-frame-pointer -Wall -Ifips/openssl-fips-ecp-2.0.9/include -DSHA1_ASM -DSHA256_ASM -DAES_ASM -c -o o_fips.o o_fips.c
o_fips.c:60:26: fatal error: openssl/fips.h: No such file or directory
compilation terminated.
make[6]: *** [o_fips.o] Error 1
crypto的Makefile正在使用o_fips.c& o_fips.c有这样的代码:
#include "cryptlib.h"
#ifdef OPENSSL_FIPS
#include <openssl/fips.h>
#include <openssl/fips_rand.h>
#include <openssl/rand.h>
#endif
由于1.0.1版本之后库中没有要包含的fips文件夹。 有人可以帮帮我吗?
答案 0 :(得分:2)
通过提供正确的--openssldir和--with-fipsdir选项解决了问题。
答案 1 :(得分:1)
我当前的代码有两个库openssl-1.0.2h和openssl-fips-ecp-2.0.12并行放置在一个名为libraries的文件夹中。这是我在Makefile中使用的代码:
export HOSTCC=gcc
export FIPSLD_CC=gcc
export FIPSDIR=$(OPENSSLFIPS_TOP_DIR)/../fips_install
export OPENSSLDIR=$(OPENSSL_TOP_DIR)
export PREMAIN_DSO=openssl-1.0.2h/fips_premain_dso
其中&#39; OPENSSL_TOP_DIR&#39;和&#39; OPENSSLFIPS_TOP_DIR&#39;是各自图书馆的路径。稍后在Makefile中我们必须构建如下的库:
@cd openssl-fips-ecp-2.0.12 path; \
./Configure --cross-compile-prefix=$(CROSS_COMPILE) $(PLATFORM) \
-fPIC no-ec2m
$(MAKE) -C $(OPENSSLFIPS_DIR)
mkdir -p $(FIPSDIR)
$(MAKE) -C $(OPENSSLFIPS_DIR) install
@cd openssl-1.0.2h path; \
./Configure --cross-compile-prefix=$(CROSS_COMPILE) $(PLATFORM) \
fips no-ec2m
$(MAKE) -C $(OPENSSL_DIR)
cp -f $(OPENSSL_DIR)/libssl.so $(LIB_DIR)/libssl.so.1.0.0
cp -f $(OPENSSL_DIR)/libcrypto.so $(LIB_DIR)/libcrypto.so.1.0.0
在设置所有特定于平台(交叉编译)变量之后,您应该使用./config来代替./Configure。请参阅openSSL FIPS用户指南Section 3.4。
第一个版本将在fips_install(FIPSDIR)文件夹中生成fipscanister和其他文件。这个FIPSDIR将由openssl图书馆内部使用,提及&#39; fips&#39;