我正在尝试.p12
从Mac OS X 10.9.4Keychain Access.app
或/usr/bin/security
在 Mac OS X 10.9.4 上提取不可提取的私钥作为文件。
基本上,似乎security import
有一个-x
选项来指定private keys are non-extractable after being imported
。
- http://opensource.apple.com/source/SecurityTool/SecurityTool-55115/keychain_import.c
- http://opensource.apple.com/source/Security/Security-55471.14/libsecurity_keychain/lib/SecImportExport.h
如上所述,这是通过CSSM_KEYATTR_EXTRACTABLE
在导入期间显式省略来实现的。随后,在尝试导出时,无法导出没有此类属性的密钥。
我可以找到至少两个相关的提及,它们似乎阻止了此类密钥的导出(提示:用于fgrep -OR
在搜索 Apple 源代码时避免跟随符号链接):
- http://opensource.apple.com/source/Security/Security-55471.14/libsecurity_keychain/lib/SecImportExportCrypto.cpp
- http://opensource.apple.com/source/Security/Security-55471.14/libsecurity_pkcs12/lib/pkcs12Crypto.cpp
我已经从 github.com/torsten 尝试过 keychain_access,但是没有用。
我试过使用 lldb , lldb -- security export -t identities -f pkcs12 -o /tmp/mycerts.p12
, 来打破SecWrappedKeys.cpp::impExpWrappedKeyOpenSslExport(),但这似乎也不起作用,因为break impExpWrappedKeyOpenSslExport
发出错误invalid command 'breakpoint impExpWrappedKeyOpenSslExport'
。
我已尝试使用 DTrace来跟踪 Cisco AnyConnect,但我对 DTrace 不够熟悉,无法显示数据结构。
我已经尝试重新编译Security 和 SecurityTool 包,但它们似乎都需要引导,但似乎没有到位。
我如何获得私钥?