Mac Security工具使用总结
Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app)。钥匙串(Keychain)实质上就是一个用于存放证书、密钥、密码等安全认证实体的仓库,在计算机中保存为一个.keychain的文件,默认存放在以下目录中(使用这几个目录中的钥匙串时不需要写路径,直接用文件名即可,Security工具会自动搜索):
- ~/Library/Keychains/
- /Library/Keychains/
- /Network/Library/Keychains/
(iOS系统: /var/Keychains/keychain-2.db )
Security API文档:
命令行工具参考文档:
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/security.1.html
使用手册:
命令行执行 man security
Security命令
语法如下:
security [-hilqv] [-p prompt] [command] [command options] [command args]
- [subcommand] -h 帮助,无命令参数时查看所有命令,带命令参数时显示该命令的使用方法
- -i 交互模式
- -p <prompt> 进入交互模式,使用自定义提示符
- -q 减少信息输出
- -v 增加信息输出
- -l security退出前,调用/usr/bin/leaks -nocontext检查执行的命令是否有泄漏
子命令(command)
子命令列表如下,后面有关子命令的说明中都将忽略命令语法前面的security [-hilav] [-p prompt]。
- help
- create-keychain 创建钥匙串并加入搜索列表
- list-keychains 显示或设置钥匙串搜索列表
- default-keychain 显示或设置默认的钥匙串
- login-keychain 显示或设置登录钥匙串
- delete-keychain 删除钥匙串并从搜索列表移除
- lock-keychain 锁定制定的钥匙串
- unlock-keychain 解锁制定的钥匙串
- set-keychain-settings 设置钥匙串配置
- set-keychain-password 设置钥匙串密码
- dump-keychain 显示一个或多个钥匙串的内容
- create-keypair 创建非对称密钥对
- add-generic-password 向钥匙串中添加通用密码项
- find-generic-password 查找通用密码项
- delete-generic-password 删除通用密码项
- add-internet-password 向钥匙串中添加网络密码项
- find-internet-password 查找网络密码项
- delete-internet-password 删除网络密码项
- add-certificates 向钥匙串种添加证书
- find-certificate 查找证书
- delete-certificate 从钥匙串种删除证书
- find-identity 查找认证实体(证书+私钥)
- set-identity-preference
- get-identity-preference
- create-db
- export
- import
- cms 编码或解码CMS信息(PKCS#7)
- install-mds 安装/重装MDS 数据库
- add-trusted-cert 添加可信证书(只包含公钥,无私钥)
- remove-trusted-cert 删除可信证书
- dump-trusted-setting 显示信任配置
- user-trust-settings-enable 显示或管理用户级别的信任配置
- trust-settings-export 导出信任配置
- trust-settings-import 导入信任配置
- verify-cert 验证证书
- authorize 授权操作
- authorizationdb 变更授权策略数据库
- execute-with-privileges 带特权执行工具
- leaks 在本进程中运行/usr/bin/leaks
- error 显示指定错误码的描述信息
- create-filevaultmaster-keychain 创建一个带密钥对的钥匙串,用于FileVault恢复(FileVault是苹果系统里的一项保密机制,会自动透明地对主目录的内容进行实时加密和解密)
创建钥匙串
create-keychain [-P] [-p <password>] [keychainFiles...]
- -p <password> 设置新创建的钥匙串的密码
- -P 调用SecurityAgent图形化程序设置密码
解锁钥匙串
unlock-keychain [-u] [-p <password>] [keychainFile]
- -u 启动GUI输入钥匙串密码
- -p <password> 指定钥匙串密码
- 不带任何参数时命令行交互方式提示输入密码
锁定钥匙串
lock-keychain [-a | <keychainFile>]
- -a 锁定所有钥匙串
- 如果指定了具体钥匙串,则只锁定那一个钥匙串
- 什么参数都不带时,锁定默认钥匙串
更改钥匙串配置
set-keychain-settings [-lu] [-t <timeout_seconds>] [keychain]
- -l 系统睡眠时锁定
- -u 一定时间周期后锁定
- -t <timeout_seconds> 闲置指定时间后锁定,省略这个选项则没有延时
向钥匙串中添加钥匙(认证实体)
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 指定可以使用导入项目的程序,可以重复出现多次
security create-keychain -p certsOfAppBuild.keychain
security unlock-keychain -p certsOfAppBuild.keychain
security -k certsOfAppBuild.keychain import xxx.p12 -P -T /usr/bin/codesign
...sign operation...
security delete-keychain certsOfAppBuild.keychian
删除证书
delete-certificate [-c name] [-Z hash] [-t] [keychain...]
- -c <name> 按common name删除证书
- -Z <hash> 按SHA1哈希值删除证书
- -t 同时删除该证书的用户信任设置
- 要删除的证书必须能够唯一确定,如果未指定钥匙串则是用默认搜索列表中的所有钥匙串
查找认证实体(证书+私钥)
find-identity [-p policy] [-s string] [-v] [keychain...]
- -p 按指定用途策略查找,可重复出现以指定多项,可用值有: basic, ssl-client, ssl-server, smime, eap, ipsec, ichat, codesigning, sys-default, sys-kerberos-kdc ,macappstore, appleID
- -s 为-p指定的策略提供参数
- -v 只显示有效的,默认显示所有。
- 如果未指定keychain,则使用默认的搜索列表
security find-identity -v -p codesigning #显示默认搜索列表中有效地认证实体
显示或设置钥匙串搜索列表
list-keychain [-d user|system|common|dynamic] [-s [keychain...]]
- -d 使用指定的preference domain
- -s 设置钥匙串搜索列表
- 不带任何参数时,显示搜索列表
输出钥匙串内容
dump-keychain [-adir] [keychain...]
- -a 输出访问控制列表
- -i 交互式编辑访问控制列表
- -d 输出项目中解密的数据
- -r 输出项目中加密的原始数据
加密/解密CMS信息(PKCS#7)
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
security cms -D -i example.mobileprovision
codesign使用keychain中的Identity(证书+私钥)进行签名
指定Identity的选项为 -s <identity>
- 如果identiy正好是40位16进制数,则按证书的SHA-1指纹查找
- 如果identity为单个横线 "-",则执行ad-hoc签名,不会用到identity。
- 首先查找keychain identity preference的full name
- 在keychain中查找Subject的common name,找到多个则失败。大小写敏感,完整匹配比部分匹配更好。多个keychain中包含同一个证书也是可以的。
关于codesign的更多用法可以查看帮助文档(命令行执行:man codesign)。
示例
codesign -s 'iPhone Developer: Thomas Kollbach (7TPNXN7G6K)' Example.app
codesign -s 9c8b212f6a2c2382847b104e387a01b246d4ce42 Example.app
Mac Security工具使用总结的更多相关文章
- Mac Security工具使用总结find-identity
Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app).钥匙串(Keychain)实质上就是一个用于存放证书.密钥.密码等安全认证实体的 ...
- mac github工具将命令当下来的代码拖入macgithub中就可以
mac github工具将命令当下来的代码拖入macgithub中就可以,刚開始傻傻的就知道点击那个加入button,总是在当下来的文件夹下创建个文件夹.并且代码不能同步
- iTrash for Mac(卸载工具)破解版含注册机
iTrash for Mac是一款专为Mac用户打造非常好用的卸载工具,itrash mac版简单好用,只需要把需要卸载的程序的拖拽到iTrash Mac版窗口内就可以删除应用程序.现为大家带来itr ...
- 虚拟多Mac地址工具Multimac
虚拟多Mac地址工具Multimac Mac地址采用唯一标识标记网络的各种设备.在同一个时间内,Linux系统中的网卡只能使用一个Mac地址.在渗透测试中,为了隐藏自己的身份,往往需要以不同的Ma ...
- 4款最受欢迎的Mac原型工具
原型工具中Wireframe, Mockup和prototype之间的有什么不同? 无论你是一名刚入行的UX/UI设计师,还是入行多年的老手,在制作原型的过程中一定接触或听说过其中很重要的三个原型术语 ...
- mac版AIcc2019旋转扭曲工具在哪?AI cc 2019 for Mac旋转扭曲工具如何使用?
想要旋转图片?ai mac通过线性的或非线性的算法,能使图像旋转.扭曲变形.今天小编要给大家分享的是如何查找使用mac版AIcc2019旋转扭曲工具,有需要的朋友快来学习学习吧! https://ww ...
- Mac下载工具folx如何下载常用的软件
最近,多档综艺节目都开展得如火如荼,比如<中国新说唱>.<这就是街舞>等深受年轻人喜欢的综艺节目.虽然手机端也可观看,但可以的话,当然是使用电脑屏幕观看节目比较过瘾. 接下来, ...
- 三大Mac清理工具实用性测评,哪款好用?
相信大多数MAC用户都较为了解,Mac虽然有着许多亮点的性能,但是让用户叫苦不迭的还其硬盘空间小的特色,至于很多人因为文件堆积以及软件缓存等,造成系统空间内存不够使用的情况.于是清理工具就成为了大多数 ...
- Mac 词典工具推荐:Youdao Alfred Workflow(可同步单词本)
想必大家都有用过 Mac 下常见的几款词典工具: 特性 系统 Dictionary 欧路词典 Mac 版 有道词典 Mac 版 在线搜索 ✗ ✔ ✔ 屏幕取词 ☆☆☆ ★★☆ ★☆☆ 划词搜索 ★★★ ...
随机推荐
- Create Volume 操作(Part I) - 每天5分钟玩转 OpenStack(50)
前面已经学习了 Cinder 的架构和相关组件,从本节我们开始详细分析 Cinder 的各种操作,首先讨论 Cinder 如何创建 volume. Create 操作流程如下: 客户(可以是 Open ...
- EntityFramework之摸索EF底层(八)
前言 此篇文章我将深入去摸索edmx中一些不为人知的东西,有时候我们需要知道Code First模型中一些存储以及映射的原理,个人觉得那是必要的也是有用的,因为很有可能SQL会出现一些其他问题,只有 ...
- MVVM 开发的几种模式讨论(WPF)
在WPF系(包括SL,WP或者Win8)应用开发中,MVVM是个老生常谈的问题.初学者可能不会有感觉,但当你写一个核心逻辑能在各种平台上无缝移植,而只需改改UI的时候,那种快感是无法用语言来形容的. ...
- 将Resource中的图片资源动态绑定到PictureBox中:
//CurrentCommunication为解决方案的名字,dynamic为图片的名字 pictureBox1.Image = CurrentCommunication.Properties.Res ...
- Mybatis高级查询之关联查询
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resul ...
- MongoDB - basic
mongoDB basic from:http://www.tutorialspoint.com/mongodb prject:https://github.com/chenxing12/l4mong ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...
- UWP开发入门(二十二)——Storyboard和Animation
微博上有同学问我MyerSplash是如何实现那个很炫的图片点亮,然后移动到屏幕中央的效果.惭愧啊,我又不是作者哪里会知道.硬着头皮去GitHub拜读了高手的代码,自愧弗如,比我不知道高到哪里去了…… ...
- html的留言板制作(js)
这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论 ...
- javascript系统时间测试题
如果系统的时间是2016年2月20日,分析下列JavaScript代码,运行后在网页上显示() var now = new Date();var year = now.getFullYear();va ...