Table of Contents
一、p12证书文件安装
1、安装命令
//设置默认的钥匙串
security default-keychain -s ~/Library/Keychains/login.keychain
//解锁指定的钥匙串
security unlock-keychain -p [Mac登录密码] ~/Library/Keychains/login.keychain
//添加钥匙
security import [p12路径] -k ~/Library/Keychains/login.keychain -P [p12证书密码]
安装完成后返回 1 identity imported.
2、security命令
Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app)。钥匙串(Keychain)实质上就是一个用于存放证书、密钥、密码等安全认证实体的仓库,在计算机中保存为一个.keychain的文件,默认存放在以下目录中(使用这几个目录中的钥匙串时不需要写路径,直接用文件名即可,Security工具会自动搜索):
- ~/Library/Keychains/
- /Library/Keychains/
- /Network/Library/Keychains/
(iOS系统: /var/Keychains/keychain-2.db )
官方文档:Keychain Services | Apple Developer Documentation
man security 查看使用手册
3、security参数说明
(1)security [-hilqv] [-p prompt] [command] [command options] [command args]
- [subcommand] -h 帮助,无命令参数时查看所有命令,带命令参数时显示该命令的使用方法
- -i 交互模式
- -p <prompt> 进入交互模式,使用自定义提示符
- -q 减少信息输出
- -v 增加信息输出
- -l security退出前,调用/usr/bin/leaks -nocontext检查执行的命令是否有泄漏
(2)security import <inputfile> [-k <keychain>] [-t <type>] [-f format] [-w] [-P passphrase] [options...]
- -k <keychain> 指定要导入项目到哪个钥匙串中
- -t <type> 指定要导入的项目类型,可取值为: pub | priv | session | cert | agg
- -f <format> 指定导入项目的格式,可取值为:openssl | openssl1 | openssl2 | bsafe | raw | pkcs7 | pkcs8 | pkcs12 | netscape | pemseq
- -w 标明包装了私钥,导入时要解开
- -x 标明导入后,私钥无法提取私钥
- -P <password> 直接输入导入项目密码,默认会使用GUI输入密码
- -a 指定键值对属性,可以重复出现多次
- -A 所有程序可以使用导入的项目
- -T 指定可以使用导入项目的程序,可以重复出现多次
(3)security unlock-keychain [-u] [-p <password>] [keychainFile]
- -u 启动GUI输入钥匙串密码
- -p <password> 指定钥匙串密码
- 不带任何参数时命令行交互方式提示输入密码
二、mobileprovision描述文件安装
1、安装命令
//获取描述文件中UUID
grep UUID -A1 -a [mobileprovision路径] | grep -io '[-A-F0-9]\{36\}'
//拷贝文件至指定位置,并以UUID命名
cp [mobileprovision路径] "~/Library/MobileDevice/Provisioning Profiles/"+UUID+".mobileprovision"
2、查看mobileprovision文件信息
security cms -D -i [mobileprovision路径]
加密/解密CMS信息(PKCS#7)参数说明:
security cms [-CDES] [<options>]
- -C 创建CMS加密信息
- -D 解密CMS信息
- -E 创建CMS包裹信息
- -S 创建CMS签名信息
解密选项
- -c <content_file> 使用分离的内容文件
- -h <level> 生产带CMS消息信息的邮件头
- -n 压制内容输出
编码选项
- -r id,... 为指定接收人创建包裹,id可以是certificate nickname或email adderess
- -G 包含签名时间属性
- -H <hash_type> 可取值为:MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512,默认为SHA1
- -N <certi_nickname> 使用指定的证书签名
- -P 包含SMIMECapabilities属性
- -T CMS信息中不包含内容
- -Y <certi_nickname> 包含指定证书的EncryptionKeyPreference属性,使用NONE忽略
- -Z <hash> 使用主题ID查找证书
通用选项
- -e <envelope> 指定envelope文件,结合-D, -E使用
- -k keychain 指定使用的keychain
- -i <infile> 从文件作输入数据,默认输入为stdin
- -o <outfile> 输出数据到文件,默认为stdout
- -p <password> 指定key db密码,默认会提示输入
- -s 逐字节传输数据
- -v 显示调试信息
- -u <certusage> 设置证书使用类型,默认为certUsageEmailSigner
- 0 certUsageSSLClient
- 1 certUsageSSLServer
- 2 certUsageSSLServerWithStepUp
- 3 certUsageSSLCA
- 4 certUSageEmailSigner
- 5 certUSageEmailRecipient
- 6 certUsageObjectSigner
- 7 certUsageUserCertImport
- 8 certUsageVerifyCA
- 9 certUsageProtectedObjectSigner
- 10 certUsageStatusResponder
- 11 certUsageAnyCA