首页 > 解决方案 > 无法从 mac 获取钥匙串证书信息

问题描述

对于从 Xcode 创建的命令行应用程序,我面临一个奇怪的问题。我正在运行一个脚本以使用以下命令获取 Mac 中钥匙串访问中可用的证书之一的到期日期

security find-certificate -c "CertificateNameHere" -p | openssl x509 -text | grep "Not After"

当我通过 Xcode 在本地运行它时,我能够获取日期。但是,当我从 Library 文件夹之一将应用程序作为服务运行时,不会获取到期日期。相反,我收到了一个错误

PEM routines:CRYPTO_internal:no start line:/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.140.1/libressl-2.8/crypto/pem/pem_lib.c:684:Expecting: TRUSTED CERTIFICATE

虽然证书是可信的

我尝试了很多解决方案,例如尝试找到合适的解决方案来获取钥匙串中可用证书的到期日期,但没有运气。所以我将它发布在stackoverflow中。我尝试了另一种使用 Mac Xcode 安全框架使用 swift 获取日期的解决方案,但问题仍然存在。

标签: macosshellterminalcommand-line-interfacekeychain

解决方案


您遇到麻烦的可能原因是访问权限。

当脚本作为服务运行时,它有另一个用户和不同/无环境上下文(如crontab服务)。

您可以通过为服务提供正确的登录用户来解决此问题,并使用source相应的命令.profile.bash_profile脚本初始化服务。


推荐阅读