首页 > 其他分享 >macOS-security命令

macOS-security命令

时间:2024-01-27 11:24:22浏览次数:26  
标签:macOS keychain 证书 指定 命令 密码 钥匙 security

参考 https://www.cnblogs.com/elesos/p/7093535.html 

https://www.cnblogs.com/pixy/p/4817579.html

含义:

Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app)。
钥匙串(Keychain)实质上就是一个用于存放证书、密钥、密码等安全认证实体的仓库,在计算机中保存为一个.keychain的文件。

使用手册:

man security

语法:

 

security [-hilqv] [-p prompt] [command] [command_options] [command_args]

  • [subcommand] -h 帮助,无命令参数时查看所有命令,带命令参数时显示该命令的使用方法
  • -i 交互模式
  • -p 进入交互模式,使用自定义提示符
  • -q 减少信息输出
  • -v 增加信息输出
  • -l security退出前,调用 /usr/bin/leaks -nocontext检查执行的命令是否有泄漏

子命令列表如下

  • 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 123456  certsOfAppBuild.keychain
security unlock-keychain -p 123456 certsOfAppBuild.keychain
security -k certsOfAppBuild.keychain import xxx.p12 -P 111111  -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



 

标签:macOS,keychain,证书,指定,命令,密码,钥匙,security
From: https://www.cnblogs.com/Galesaur-wcy/p/17991221

相关文章

  • 在 Python 的 `glob` 模块中,文件名的大小写敏感性取决于你的操作系统。在 Unix 和 Lin
    在Python的`glob`模块中,文件名的大小写敏感性取决于你的操作系统。在Unix和Linux系统中,`glob`是区分大小写的。然而,在Windows和MacOS中,`glob`是不区分大小写的。例如,如果你在Unix或Linux系统中运行以下代码:```pythonimportglobfiles=glob.glob('*.xlsx')......
  • ADB 常用命令
    ADB常用命令一、安装adbinstall 二、上传adbpush命令功能说明 1. 将 pc_file上传push到手机后命名device_file。adbpush<pc_file><device_file>2.将文件push到dir目录。adbpush<file><dir>adbpush<文件夹><文件夹>adbpush<文件夹><文件夹>......
  • Linux基础命令笔记(黑马)
    Linux基础命令Linux常用快捷键ctrl+c:强制停止程序运行ctrl+d:退出用户登录或某些特定程序的专属页面(不能用于vim)!历史命令前缀:执行历史中最后使用带有该命令前缀的命令例:!p相当于python、!t相当于tailctrl+r:可输入历史命令关键字搜索到想要到命令,按回车直接执行,按左......
  • Linux命令:userdel 删除用户账户
    userdel命令使用1.删除用户账户$sudouserdeluser12.删除用户账户,并删除用户『主目录』和『邮件』【-r/--remove】$sudouserdel-ruser19$sudouserdel--removeuser203.强制删除用户账户【-f/--force】$sudouserdel-fuser1$sudouserdel--force......
  • 3、Git安装与常用命令
    本教程里的git命令例子都是在GitBash中演示的,会用到一些基本的linux命令,在此为大家提前列举:ls/ll查看当前目录cat查看文件内容touch创建文件vivi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、editPlus、notPad++等其它编辑器)3.1、Git环境配置3.1.1下......
  • Linux man命令
    在Linux系统中,man是一个命令,用于调用系统的手册页(ManualPages)以获取命令、函数、文件或概念的详细信息和用法。手册页是一种文档形式,提供了有关Linux系统中各种命令、工具、库函数、文件格式等的详细说明。它们按照特定的章节组织,并分配了不同的编号。要使用man命令来查......
  • Linux基础命令-find
    目录Linux基础命令-find一、工作特点:二、常用参数:三、练习:Linux基础命令-find实时查找工具,通过遍历指定路径下的文件系统完成文件查找find命令的功能是用于根据给定的路径和条件查找相关文件或目录,参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统......
  • windows使用VMware安装macOS
    1.准备工作笔记本型号:dellG33579i5-8300H款VMware:15.5(VMwareWorkstation的安装流程省略...)macOS:10.15.1Catalina(来自:https://www.bilibili.com/video/BV1zK4y1b7hU/?spm_id_from=333.999.0.0&vd_source=619d0f384650adc67c5cff8a3767b490)unlocker427(来自github大佬......
  • Linux命令:usermod 修改用户账户
    usermod命令详细使用1.修改用户的『主目录』【-d/--home】$sudousermod-d/home/user111user11$sudousermod--home/home/user100user10此命令只会更新/etc/passwd文件中用户的『主目录』字段的值(七个字段中的第六个),不会创建这个目录,如果要创建这个目录,搭配-......
  • jmeter 用命令执行jmx脚本
    前提:环境变量需要配置 cmd命令模式下,可以输入命令 jmeter-n-tD:\jmeterplan\meter.jmx-lD:\result\meter.jtl-e-oD:\jmeterplan\result ......