Mac OS不同版本中security add-trusted-cert命令兼容性问题求助
macOS版本差异导致
security add-trusted-cert命令参数失效的原因及通用解决办法 原因解释
- 在macOS 12.3.1及更早的Monterey版本中,
security add-trusted-cert命令使用-r trustRoot作为标记系统根信任证书的有效参数。 - 苹果在macOS 12.5及后续更新中调整了信任设置的参数规范,将
trustRoot替换为trustAsRoot,同时废弃了旧参数。这就导致跨版本执行不匹配的参数时,会触发SecTrustSettingsSetTrustSettings: One or more parameters passed to a function were not valid错误。
通用兼容命令
可以通过判断系统版本自动选择对应参数,以下是兼容所有Monterey版本的shell脚本:
#!/bin/bash # 替换为你的证书路径 CERT_PATH="./blabla.blabla..." KEYCHAIN="/Library/Keychains/System.keychain" # 提取macOS版本的第二位数字(比如12.3.1取3,12.5取5) OS_VERSION_MINOR=$(sw_vers -productVersion | cut -d '.' -f 2) if [ "$OS_VERSION_MINOR" -ge 5 ]; then # macOS 12.5及以上版本使用trustAsRoot /usr/bin/security add-trusted-cert -r trustAsRoot -k "$KEYCHAIN" -p ssl -p basic -d "$CERT_PATH" else # macOS 12.3.1及更早版本使用trustRoot /usr/bin/security add-trusted-cert -r trustRoot -k "$KEYCHAIN" -p ssl -p basic -d "$CERT_PATH" fi
使用说明:
- 将
CERT_PATH替换为你的实际证书路径 - 保存为
.sh文件后赋予执行权限(chmod +x script.sh),运行即可自动适配系统版本
内容的提问来源于stack exchange,提问作者Seydou Doumbia
相关产品推荐
相关产品推荐

