我正在尝试使用以下命令将pkcs#12
证书导入OS X Keychain:
security import filename -k ~/Library/Keychains/login.keychain -P password -f pkcs12
在python中,我使用subprocess
,如下所示:
if os.path.isfile(_file) and platform.system() == 'Darwin':
keychain = os.path.expanduser('~/Library/Keychains/login.keychain')
command_line = 'security import {} -k {} -P {} -f pkcs12'.format(_file, keychain, password)
logger.info('Importing {} into OS X KeyChain.'.format(_file))
return subprocess.call(shlex.split(command_line))
但是我收到此错误消息:
security: SecKeychainItemImport: One or more parameters passed to a function were not valid.
我甚至尝试过使用shell=True
,但后来我得到了security
用法,好像我已经通过了一些错误的论点。
Usage: security [-h] [-i] [-l] [-p prompt] [-q] [-v] [command] [opt ...]
...
...
但是,从命令行运行它时,该命令按预期工作:
security import <filename> -k <home>/Library/Keychains/login.keychain -P DTWLDHPYNBWBJB3 -f pkcs12
1 identity imported.
1 certificate imported.
有什么想法吗?从非交互式控制台运行security
时是否存在限制?
任何python库都能实现同样的目标吗?
问候
答案 0 :(得分:0)
这实际上是由于另一个问题。
我使用的是未被刷新或关闭的tmpfile。
当脚本运行时,该函数无法在该文件中找到任何内容。
脚本结束后,文件(其中包含&#39; delete = False&#39;)被刷新,因此命令行没有问题。
解决方案是设置bufsize=0
:(