考虑到我知道系统KeyChain包含所有需要的SSL证书,我确实想要生成一个PEM包,我可以将其与其他无法与Apple keychain通信的工具一起使用。例如:Python请求库或Oracle Java。
请注意,这不是特定证书,而是我想要进行的批量操作。
一旦我有了这个包,我可以将SSL_CERT_FILE和REQUESTS_CA_BUNDLE等环境变量指向它的位置并使用它。
答案 0 :(得分:3)
security find-certificate -a -p /Library/Keychains/System.keychain > $TMP_CERT
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> $TMP_CERT
我将此标记为不完整的解决方案,因为在使用此文件时仍无法使python请求成功。 Curl似乎加载并使用该文件没有任何问题。
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
答案 1 :(得分:0)
如果只有少数几个非系统CA,那么从“钥匙串”应用程序手动将它们全部导出并不难。
从启动板->其他->钥匙串访问中打开钥匙串应用。
在左侧面板中,选择“系统根目录”和“证书”。
在主面板中,单击第一个证书,然后一直向下滚动并按住Shift键并单击最后一个证书以将其全部选中。
右键单击所选证书之一,然后选择“导出###项目...”。
将文件保存在一个不错的目录中。
在左侧“钥匙串”面板的顶部,选择“系统”。
找到要包含在捆绑软件中的所有自定义根CA,右键单击它们,然后将它们导出到与步骤5中相同的目录。
打开一个终端并导航到漂亮的目录。将它们与cat Certificates.pem <your custom CA>.pem <your other custom CA>.pem > bundle.pem
串联在一起。