本篇文章给大家谈谈如何检查OpenSSL中的FIPS140-2支持?,以及openssl-fips是openssl的知识点,同时本文还将给你拓展2014phpstudyopenssl0.9.8/1.0
本篇文章给大家谈谈如何检查OpenSSL中的FIPS 140-2支持?,以及openssl-fips是openssl的知识点,同时本文还将给你拓展2014 phpstudy openssl 0.9.8/1.0.1怎么切换、CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g、centos7.4 升级openssl环境至openssl-1.1.0c、FIPS支持OpenSSL交叉编译:incore指纹问题等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 如何检查OpenSSL中的FIPS 140-2支持?(openssl-fips是openssl)
- 2014 phpstudy openssl 0.9.8/1.0.1怎么切换
- CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g
- centos7.4 升级openssl环境至openssl-1.1.0c
- FIPS支持OpenSSL交叉编译:incore指纹问题
如何检查OpenSSL中的FIPS 140-2支持?(openssl-fips是openssl)
我们有一个客户正在询问有关OpenSSL FIPS (Federal Information Processing Standard) 140-2
兼容支持的 验证密码用法。如何检查OpenSSL是否 具有FIPS抱怨 是否提供了FIPS验证的加密?
作业系统: Redhat 5 Linux
答案1
小编典典如何检查OpenSSL是否提供了FIPS验证的加密?
这取决于您要检查的方式和时间。它还取决于应用程序。
FIPS可能可用,但未使用。因此,应用程序必须通过启用验证密码FIPS_mode_set
,并且调用 必须 成功。
如果要检查是否已将FIPS功能库(例如OpenSSL 1.0.1e)配置为使用FIPS对象模块,则可以:
$ cat /usr/local/ssl/include/openssl/opensslconf.h | grep -A 2 -i fips#ifndef OPENSSL_FIPS# define OPENSSL_FIPS#endif
OPENSSL_FIPS
告诉您FIPS Capable Library已配置为使用FIPS对象模块。因此,可以使用经过FIPS验证的加密技术。
OPENSSL_FIPS
但是,这并不意味着应用程序正在使用FIPS验证的密码学。应用程序必须调用FIPS_mode_set
,并且函数必须返回成功。
在运行时,您可以打印与以下内容关联的字符串(其取自我专门为此使用的代码):
ostringstream oss;oss << OPENSSL_VERSION_TEXT;LogVersion(oss.str().c_str());
该代码将产生类似于以下内容的日志条目:
Version: OpenSSL 1.0.1f-fips 6 Jan 2014
您可以通过一些技巧来审核该模块。例如,以下内容将测试如果可执行文件是真正的FIPS ,则 必须 出现的某些符号。
在这种情况下,我正在测试支持OpenSSL
FIPS的共享对象。如果应用程序链接到libcrypto.a
,那么您可以审核程序而不是OpenSSL共享对象。
$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_*00000000000c7f60 T ERR_load_FIPS_strings00000000000c2250 T FIPS_add_error_data00000000000c3900 T FIPS_add_lock0000000000082820 T FIPS_bn_bin2bn0000000000082980 T FIPS_bn_bn2bin0000000000082760 T FIPS_bn_clear0000000000082350 T FIPS_bn_clear_free00000000000823d0 T FIPS_bn_free0000000000087c90 T FIPS_bn_generate_prime_ex0000000000082790 T FIPS_bn_get_word0000000000082d20 T FIPS_bn_is_bit_set0000000000087c80 T FIPS_bn_is_prime_ex0000000000087750 T FIPS_bn_is_prime_fasttest_ex...
您还具有来自的符号fips_premain.c
:
$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_text_*00000000000c4520 T FIPS_text_end000000000007b340 T FIPS_text_start$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_rodata*00000000001e1e20 R FIPS_rodata_end00000000001d8ce0 R FIPS_rodata_start$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_signature*00000000004696c0 B FIPS_signature$ nm /usr/local/ssl/lib/libcrypto.so | grep -i fips_incore*000000000007b5a0 T FIPS_incore_fingerprint
现在,这真是偷偷摸摸。您可以检查模块是否包含自检。例如,fips_drbg_selftest.h
将对其自检包括以下字节:
0x2e,0xbf,0x98,0xf9,0x85,0x27,0x8b,0xff,0x36,0xb9,0x40,0x0b,0xc0,0xa1,0xa0,0x13,0x20,0x06,0xcc,0xe6,0x2a,0x03,0x77,0x7d,0xee,0xde,0xcc,0x34,0xe3,0xcd,0x77,0xea,0xd0,0x3e,0xbe,0xdd,0xf6,0x15,0xfb,0xa7,0xd7,0x8e,0xd0,0x2e,0x2f,0x82,0x4c,0xc7,0x87,0xb1,0x6f,0xc5,0xf8,0x5c,0x78,0xde,0x77,0x9b,0x15,0x9a,0xb9,0x3c,0x38
您可以通过转储符号的20个字节来验证开发人员是否已运行incore
或macho_incore
在其可执行文件上嵌入FIPS指纹FIPS_signature
。如果它的20个字节为0(默认为fips_premain.c
),则指纹未嵌入并且FIPS_mode_set
将失败。因此,在这种情况下不可能使用FIPS验证的密码学。
更新 :我将关于主题的幻灯片放到了OpenSSL
Wiki。其称为使用OpenSSL验证密码学构建应用程序:开发人员和审计人员的现场说明。您将需要从幻灯片18开始复习材料。
我为OWASP构建了幻灯片平台,但是没有兴趣接收它。我知道Stack Overflow不赞成OpenSSL
Wiki上的链接,但是我不知道如何在此处提供35张以上的幻灯片。
2014 phpstudy openssl 0.9.8/1.0.1怎么切换
2014 phpstudy 自带openssl 0.9.8和1.0.1,问题是要配制支持https时,还得满足TLSv1.2,而要满足TLSv1.2就必须要支持openssl1.0.1及以上版本,现在不知道怎么切换,还请phpstudy大神给帮忙解决下,谢谢。
以上就是2014 phpstudy openssl 0.9.8/1.0.1怎么切换的详细内容,更多请关注php中文网其它相关文章!
CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g
# cd /usr/src# wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz
# tar -zxf openssl-1.0.1g.tar.gz
# cd openssl-1.0.1g
# ./config
# make
# make test
# make install
# openssl version(显示的是旧的版本1.0.1e)
执行下面的命令:
# mv /usr/bin/openssl /root/ (或者删除)
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# openssl version
OpenSSL 1.0.1g 7 Apr 2014
centos7.4 升级openssl环境至openssl-1.1.0c
升级openssl环境至openssl-1.1.0c@H_301_2@
升级openssl环境至openssl-1.1.0c
1、查看源版本
[root@zj ~]#openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
2、下载 openssl-1.1.0c.tar.gz
最新版本可以在这个网站下载:
https://www.openssl.org/source/
wgethttp://www.openssl.org/source/openssl-1.1.0c.tar.gz
3、更新zlib
yum install -y zlib
4、解压安装
tar zxfopenssl-1.1.0c.tar.gz
cdopenssl-1.1.0c
./config shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
ldconfig -v
5、查看是否升级成功
[root@zj ~]#openssl version -a
解决openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误
问题在Centos7上编译安装openssl后,运行openssl version出现如下错误:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory这是由于openssl库的位置不正确造成的。解决方法:在root用户下执行:ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
升级openssl环境至openssl-1.1.0c
1、查看源版本
[root@zj ~]#openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
2、下载 openssl-1.1.0c.tar.gz
最新版本可以在这个网站下载:
https://www.openssl.org/source/
wgethttp://www.openssl.org/source/openssl-1.1.0c.tar.gz
3、更新zlib
yum install -y zlib
4、解压安装
tar zxfopenssl-1.1.0c.tar.gz
cdopenssl-1.1.0c
./config shared zlib
make
make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
ldconfig -v
5、查看是否升级成功
[root@zj ~]#openssl version -a
解决openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误
问题在Centos7上编译安装openssl后,运行openssl version出现如下错误:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory这是由于openssl库的位置不正确造成的。解决方法:在root用户下执行:ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
FIPS支持OpenSSL交叉编译:incore指纹问题
我在尝试使用编译为MIPS设备上的FIPSfunction的OpenSSL共享库(libcrypto)时出现问题。
我以下面的方式交叉编译了FIPS对象模块,然后是OpenSSL库(总结):
export FIPS_SIG=<my_path>/incore ./config fips --with-fipsdir=<my_path>/fips-2.0 make depend make make install
我做了所有必要的步骤,所以我可以编译和安装库。
当我尝试从链接OpenSSL库的应用程序运行FIPS_mod_set(1) API时,会出现此问题。
接收此错误的FIPS模式初始化失败:
2010346568:error:2D06B06F:lib(45):func(107):reason(111):NA:0:
debuggingFIPS代码,我发现问题出在FIPS_check_incore_fingerprint(void)函数中:
检查memcmp(FIPS_signature,sig,sizeof(FIPS_signature))失败。
进一步深入debugging,我发现FIPS_signature值仍然是默认值,所以我怀疑由fipsld实用程序调用的incore脚本没有正确地将指纹embedded到OpenSSL共享对象中。
如何检查incore脚本是否将指纹embedded到共享对象中?
如何打印预期的指纹?
我需要修改incore脚本吗? (我想这是不允许的)
你有什么build议吗?
非常感谢!
PS:我正在使用x86 Linux机器进行交叉编译。
C ++跨平台开发(Windows和Mac OS)
在Mac上编译Swift并在Windows上运行
针对Windows上的Linux进行交叉编译(链接器输出文件不会在Linux上以可执行文件的forms运行,并且具有未定义的符号)
在cygwin上的crosstool-ng构build中,gettext编译失败
为QNX 6.6.0 armle v7交叉编译perl
Android-Ndk与交叉编译? 这两个工作,那么Android NDK的需求是什么?
如何使用u-boot为ARM处理器加载应用程序
CUDA交叉编译错误! cuda-gdb错误信息RSEG1058
cuda nvcc交叉编译器
从哪里可以findcp命令的源代码?
我发现这个问题! 我将尝试解释整个调试过程和解决方案。
介绍:
当OpenSSL被配置为具有FIPS功能时,在编译过程中,Makefile调用一个实用程序fipsld ,它们执行FIPS对象模块检查,并为应用程序可执行文件生成新的HMAC-SHA-1摘要(正如官方OpenSSL用户指南https://www.openssl.org/docs/fips/UserGuide-2.0.pdf )
fipsld命令要求设置CC和FIPSLD_CC环境变量,后者优先。
在Makefile中你会发现这样的东西:
libcrypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT) @if [ "$(SHLIB_TARGET)" != "" ]; then if [ "$(FIPSCANLIB)" = "libcrypto" ]; then FIPSLD_LIBCRYPTO=libcrypto.a ; FIPSLD_CC="$(CC)"; CC=$(FIPSDIR)/bin/fipsld; export CC FIPSLD_CC FIPSLD_LIBCRYPTO; fi; $(MAKE) -e SHLIBDirs=crypto CC="$${CC:-$(CC)}" build-shared && (touch -c fips_premain_dso$(EXE_EXT) || :); else echo "There''s no support for shared libraries on this platform" >&2; exit 1; fi
然后, fipsld实用程序将调用一个shell脚本incore ,用于将FIPS对象模块的预期指纹嵌入到OpenSSL共享对象中。 通过FIPS_SIG env变量指定incore路径很重要,例如:
export FIPS_SIG=$PWD/opensslfips2.0/util/incore
调试:
调试incore脚本,我可以看到脚本尝试将签名嵌入到0x001EE6B0偏移量的共享对象中,而共享对象内的FIPS_signature符号位于不同的偏移量处,更具体地在0x001F0630 :
objdump -t libcrypto.so.1.0.0 | grep FIPS_signature 001f0630 g O .data 00000014 FIPS_signature readelf -a libcrypto.so.1.0.0 | grep FIPS_signature 870: 001f0630 20 OBJECT GLOBAL DEFAULT 18 FIPS_signature 3925: 001f0630 20 OBJECT GLOBAL DEFAULT 18 FIPS_signature
此外,转储共享对象,我无法找到生成的签名在偏移量0x001EE6B0,所以我得出的结论是,共享对象是由签名嵌入过程后编辑一些其他进程。
解:
我正在使用以下方式格式化的OpenSSL数据包的软件包Makefile:
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> all $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> build-shared rm $(PKG_BUILD_DIR)/libssl.so.*.*.* $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> do_linux-shared $(MAKE) -C $(PKG_BUILD_DIR) <options> install
正如所怀疑的那样, make build-shared 并使do_linux-shared命令负责以错误的方式更改共享对象。
注意make build-shared被调用时不使用正确的环境变量。
我改变了包Makefile:
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) <options> all $(MAKE) -C $(PKG_BUILD_DIR) <options> install
现在FIPS_check_incore_fingerprint(void)函数返回成功,一切正常工作!
注意:
下面的Android设备指南对找到合适的解决方案非常有用。 https://wiki.openssl.org/index.PHP/FIPS_Library_and_Android
总结
以上是小编为你收集整理的FIPS支持OpenSSL交叉编译:incore指纹问题全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
关于如何检查OpenSSL中的FIPS 140-2支持?和openssl-fips是openssl的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于2014 phpstudy openssl 0.9.8/1.0.1怎么切换、CentOS6.5下OpenSSL升级到OpenSSL 1.0.1g、centos7.4 升级openssl环境至openssl-1.1.0c、FIPS支持OpenSSL交叉编译:incore指纹问题的相关信息,请在本站寻找。
本文标签: