Mac Security工具使用總結

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/Security/Conceptual/keychainServConcepts/01introduction/introduction.html

命令行工具參考文檔:

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 進入交互模式,使用自定義提示符
-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 ] [keychainFiles…]

-p 設置新創建的鑰匙串的密碼
-P 調用SecurityAgent圖形化程序設置密碼

解鎖鑰匙串
unlock-keychain [-u] [-p ] [keychainFile]

-u 啓動GUI輸入鑰匙串密碼
-p 指定鑰匙串密碼
不帶任何參數時命令行交互方式提示輸入密碼

鎖定鑰匙串
lock-keychain [-a | ]

-a 鎖定所有鑰匙串
如果指定了具體鑰匙串,則只鎖定那一個鑰匙串
什麼參數都不帶時,鎖定默認鑰匙串

更改鑰匙串配置
set-keychain-settings [-lu] [-t <timeout_seconds>] [keychain]

-l 系統睡眠時鎖定
-u 一定時間週期後鎖定
-t <timeout_seconds> 閒置指定時間後鎖定,省略這個選項則沒有延時

向鑰匙串中添加鑰匙(認證實體)
import [-k ] [-t ] [-f format] [-w] [-P passphrase] [options…]

-k 指定要導入項目到哪個鑰匙串中
-t 指定要導入的項目類型,可取值爲: pub | priv | session | cert | agg
-f 指定導入項目的格式,可取值爲:openssl | openssl1 | openssl2 | bsafe | raw | pkcs7 | pkcs8 | pkcs12 | netscape | pemseq
-w 標明包裝了私鑰,導入時要解開
-x 標明導入後,私鑰無法提取私鑰
-P 直接輸入導入項目密碼,默認會使用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 按common name刪除證書
-Z 按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] []

-C 創建CMS加密信息
-D 解密CMS信息
-E 創建CMS包裹信息
-S 創建CMS簽名信息
解密選項

-c <content_file> 使用分離的內容文件
-h 生產帶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 使用主題ID查找證書
通用選項

-e 指定envelope文件,結合-D, -E使用
-k keychain 指定使用的keychain
-i 從文件作輸入數據,默認輸入爲stdin
-o 輸出數據到文件,默認爲stdout
-p 指定key db密碼,默認會提示輸入
-s 逐字節傳輸數據
-v 顯示調試信息
-u 設置證書使用類型,默認爲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

如果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工具使用總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章