2

我想用 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”在开头:

“感谢 Roy Wood,现在提供了对 Mac OS(pre X)的初始支持。”

我尝试安装它仍然导致命令行出现一些错误。

谁能告诉我是否可以在优胜美地上使用带有 OpenSSL 安装的 SHA-256 签名算法?如果这不可能,我觉得很奇怪,但我不是这个领域的专家。希望有好的提示!

4

3 回答 3

5

终于知道了如何做到这一点:

  1. 使用命令安装自制软件(参见http://brew.sh/index.htmlruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. 使用命令安装最新的 openssl 版本brew install openssl
  3. 在终端中运行brew link --force openssl,打开一个新的并which openssl在其中运行 -> 会告诉你/usr/local/bin/openssl
  4. 多田!现在如果你运行openssl version它会显示(如果你在它显示之前OpenSSL 1.0.2 22 Jan 2015没有运行)brew link --force opensslOpenSSL 0.9.8zc 15 Oct 2014

:) (发现在 OS X 上使用 Homebrew 更新 OpenSSL 的提示,之前不知道 homebrew 或者我需要它来运行最新的 openssl。

于 2015-02-21T16:48:08.620 回答
1

谁能告诉我是否可以在优胜美地上使用带有 OpenSSL 安装的 SHA-256 签名算法?

可以,但您需要安装更新版本的 OpenSSL。OS X 的 0.9.8 缺少椭圆曲线支持(除其他外)。


OpenSSL 的最新版本似乎是 1.0.2,但https://www.openssl.org/source/上的源代码似乎不适用于 OS X,因为文件“Install.MacOS”在开头:

“感谢 Roy Wood,现在提供了对 Mac OS(pre X)的初始支持。”

忽略它,因为它是错误的。

请参阅有关编译和安装的 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_128IIRC)。


当您需要在程序中使用 OpenSSL 时,您将使用/usr/local/ssl/include它作为头文件路径和/usr/local/ssl/lib库路径。

事实上,我不使用库路径,因为 OS X 的链接器会忽略您对静态链接的请求。我使用静态链接来避免问题LD_PRELOADDYLD_LIBRARY_PATH技巧(例如针对 1.0.2 in 进行编译/usr/local/ssl,但在运行时加载 0.9.8 in /usr/lib)。所以我的编译看起来像:

gcc foo.c bar.c /usr/local/ssl/lib/libcrypto.a -o foobar.exe

存档是目标文件 ( *.o) 的集合,因此您可以像指定任何其他目标文件一样指定它们。

于 2015-02-22T07:26:17.017 回答
0

在 OSX El Capitan 上

  • 安装自制软件(参见http://brew.sh/index.html
  • 使用命令安装最新的 openssl 版本brew install openssl
  • /usr/local/opt/openssl/bin/openssl sha256

/usr/local/bin即使您使用该选项, Brew 现在也拒绝将 openssh 链接到,--force因此您必须openssh从 brew 安装位置运行或自己链接到它。

于 2017-12-07T17:09:30.827 回答