我想用OpenSSL创建一个自签名证书(root ca)。签名算法需要是具有SHA-256哈希的ECDSA签名。
在我的Mac OS X(Yosemite)上,我安装了OpenSSL版本0.9.8zc(从2014年10月15日起)。当我在命令行上调用openssl ciphers -v
时,我的当前OpenSSL版本似乎不支持SHA2(使用SHA-256等)。
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
DES-CBC3-MD5 SSLv2 Kx=RSA Au=RSA Enc=3DES(168) Mac=MD5
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA SSLv3 Kx=DH Au=DSS Enc=SEED(128) Mac=SHA1
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
RC2-CBC-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC2(128) Mac=MD5
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5
RC4-MD5 SSLv2 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5
EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1
EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1
DES-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1
DES-CBC-MD5 SSLv2 Kx=RSA Au=RSA Enc=DES(56) Mac=MD5
EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(512) Au=RSA Enc=DES(40) Mac=SHA1 export
EXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH(512) Au=DSS Enc=DES(40) Mac=SHA1 export
EXP-DES-CBC-SHA SSLv3 Kx=RSA(512) Au=RSA Enc=DES(40) Mac=SHA1 export
EXP-RC2-CBC-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export
EXP-RC2-CBC-MD5 SSLv2 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export
EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export
EXP-RC4-MD5 SSLv2 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export
最新版本的OpenSSL似乎是1.0.2,但是https://www.openssl.org/source/的可用源代码似乎不适用于OS X,因为文件“Install.MacOS”在开头就说明了: / p>
“感谢Roy Wood对Mac OS的初步支持(前 X)现在提供。“
我尝试安装它但导致命令行出现一些错误。
有人能告诉我,是否可以在Yosemite上使用SHA-256签名算法和OpenSSL安装?如果这不可能,我觉得很奇怪,但我不是这个领域的专家。 希望得到一个好的暗示!
答案 0 :(得分:5)
终于找到了如何做到这一点:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install openssl
brew link --force openssl
,打开一个新的并在其中运行which openssl
- >会告诉你/usr/local/bin/openssl
openssl version
,它将显示OpenSSL 1.0.2 22 Jan 2015
(如果您在显示brew link --force openssl
之前未运行OpenSSL 0.9.8zc 15 Oct 2014
):) (找到Update OpenSSL on OS X with Homebrew上的提示,之前不知道自制软件或我需要它来获取最新的openssl运行。
答案 1 :(得分:1)
有人能告诉我,是否可以在Yosemite上使用SHA-256签名算法和OpenSSL安装?
是的,但您需要安装更新版本的OpenSSL。 OS X的0.9.8缺乏椭圆曲线支持(等等)。
最新版本的OpenSSL似乎是1.0.2,但是https://www.openssl.org/source/的可用源代码似乎不适用于OS X,因为文件“Install.MacOS”在开头就说明了: / p>
“感谢Roy Wood现在提供的对Mac OS(前X)的初始支持。”
忽略它,因为它错了。
请参阅Compilation and Installation上的OpenSSL wiki。 64位OS X上的30秒飞越:
export KERNEL_BITS=64
cd openssl
./config shared no-ssl2 no-ssl3 no-comp enable-ec_nistp_64_gcc_128 --openssldir=/usr/local
make all
sudo make install
忽略关于make depend
的提示,因为您不需要它。
相关:如果你想构建一个胖胖的OpenSSL,那么请看这个问题:Build Multiarch OpenSSL on OS X。简短的回答是,不要尝试,因为它不会因OpenSSL makefile而起作用。
如果您需要胖库,请执行以下步骤:
export KERNL_BITS=64
./configure ...
...
mv libcrypto.a libcrypto-x86_64.a
mv libssl.a libssl-x86_64.a
make clean && make dclean
export KERNL_BITS=32
./configure ...
...
mv libcrypto.a libcrypto-i386.a
mv libssl.a libssl-i386.a
lipo -create libcrypto-x86_64.a libcrypto-i386.a -output libcrypto.a
lipo -create libssl-x86_64.a libssl-i386.a -output libssl.a
sudo make install
在运行dylibs
之前,对make install
进行泡沫,冲洗和重复。注意:i386应该不使用enable-ec_nistp_64_gcc_128
(IIRC)。
当您需要在程序中使用OpenSSL时,您将使用/usr/local/ssl/include
作为标题路径,并使用/usr/local/ssl/lib
作为库路径。
事实上,我不使用库路径,因为OS X的链接器会忽略您对静态链接的请求。我使用静态链接来避免LD_PRELOAD
和DYLD_LIBRARY_PATH
问题和技巧(比如在/usr/local/ssl
中编译1.0.2,但在运行时在/usr/lib
中加载0.9.8)。所以我的编译看起来像:
gcc foo.c bar.c /usr/local/ssl/lib/libcrypto.a -o foobar.exe
归档是目标文件(*.o
)的集合,因此您可以像任何其他目标文件一样指定它们。
答案 2 :(得分:0)
OSX El Capitan
brew install openssl
/usr/local/opt/openssl/bin/openssl sha256
Brew现在拒绝将openssh链接到/usr/local/bin
即使您使用--force
选项,因此您必须从brew安装位置运行openssh
或自行链接到它。