?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
此頁面解釋了為運(yùn)行自己的公證服務(wù)的用戶提供的公證客戶端的高級用途。確保你已經(jīng)讀過并理解了如何經(jīng)營自己的公證服務(wù)在繼續(xù)之前。
此文檔的命令示例省略了-s
和-d
旗子。如果您不知道這些選項是什么,請閱讀開始文檔或運(yùn)行notary --help
在繼續(xù)之前。一旦了解了這些標(biāo)志的作用,就必須在遵循本文檔時為這些選項提供自己的值。您還可以配置這些選項,請參見高級配置選項想了解更多信息。
在向集合添加和簽名內(nèi)容之前,必須先初始化該集合。
$ notary init example.com/collection No root keys found. Generating a new root key...You are about to create a new root signing key passphrase. This passphrase will be used to protect the most sensitive key in your signing system. Please choose a long, complex passphrase and be careful to keep the password and the key file itself secure and backed up. It is highly recommended that you use a password manager to generate the passphrase and keep it safe. There will be no way to recover this key. You can find the key in your config directory.Enter passphrase for new root key with ID 1f54328:Repeat passphrase for new root key with ID 1f54328:Enter passphrase for new targets key with ID 1df39fc (example.com/collection):Repeat passphrase for new targets key with ID 1df39fc (example.com/collection):
初始化受信任的集合將生成以下項;所有密鑰都使用非對稱算法,但不要求它們都使用同算法:
如果沒有找到根鍵,將生成一個初始根鍵。此鍵將用作所有受信任集合的默認(rèn)信任根。
目標(biāo)鍵和快照鍵。如果可信集合%29的作者持有的安全配置文件%28相同,則使用相同的密碼來加密這兩種密碼。這就是為什么您不會被要求提供快照密鑰密碼的原因。
時間戳鍵。這是由服務(wù)器根據(jù)來自客戶端的請求生成的,只返回公鑰。服務(wù)器持有私鑰,并將代表用戶簽署時間戳。
存根簽署公證元數(shù)據(jù)。此階段為集合的信任元數(shù)據(jù)的基本版本。它將在發(fā)布到服務(wù)器時最后確定。
使用公證CLI向受信任的集合添加目標(biāo)非常簡單:
$ notary add example.com/collection v1 my_file.txt
上面的命令添加本地文件。my_file.txt
%28該文件必須相對于目標(biāo)名稱下的當(dāng)前工作目錄%29存在v1
到example.com/collection
我們建立的集合。本地文件的內(nèi)容實際上沒有添加到集合中--“目標(biāo)”由文件路徑和內(nèi)容的一個或多個校驗和組成。
注意,這是一個脫機(jī)命令,我們必須運(yùn)行notary publish example.com/collection
使添加生效。
要刪除目標(biāo),我們使用notary remove
命令,指定槍和目標(biāo)名稱。
$ notary remove example.com/collection v1
移除目標(biāo)也是一個脫機(jī)命令,它需要notary publish example.com/collection
才能生效。
默認(rèn)情況下,公證客戶端負(fù)責(zé)管理根、目標(biāo)和快照角色的私鑰。在初始化新的受信任集合時,默認(rèn)情況下將生成所有這些鍵。鑰匙在公證處trust_dir
目錄。此外,如果存在委托角色,則這些角色的密鑰也將由公證客戶端管理。
公證服務(wù)器始終負(fù)責(zé)管理時間戳密鑰。但是,如果快照密鑰從公證客戶端旋轉(zhuǎn)到服務(wù)器,則公證服務(wù)器可以管理快照密鑰,如下節(jié)所述。
在可能發(fā)生妥協(xié)的情況下,公證人提供了一個用于旋轉(zhuǎn)鍵的CLI命令。當(dāng)前,可以使用notary key rotate
命令旋轉(zhuǎn)目標(biāo)或快照鍵。
默認(rèn)情況下,快照鍵由公證客戶端管理,但請使用notary key rotate snapshot -r
命令將快照鍵旋轉(zhuǎn)到服務(wù)器,以便公證服務(wù)器隨后對快照進(jìn)行簽名。當(dāng)使用帶可信集合的委托時,這一點(diǎn)尤其有用,這樣委托就不會需要訪問快照鍵來將更新推送到集合中。
注意,由Docker 1.11引擎客戶端創(chuàng)建的新集合將使服務(wù)器默認(rèn)管理快照鍵。若要在客戶端上恢復(fù)對快照鍵的控制,請使用notary key rotate
命令,而不使用-r
旗子。
目標(biāo)鍵必須是本地管理的--要旋轉(zhuǎn)目標(biāo)鍵,例如,在發(fā)生妥協(xié)的情況下,請使用notary key rotate targets
命令,而不使用-r
旗子。
公證人可與Yubikey 4鍵,當(dāng)Yubikey啟用CCID模式時,通過PKCS 11接口。Yubikey將被優(yōu)先用于存儲根密鑰,并且需要用戶觸摸輸入才能簽名。請注意,DockerEngine 1.11客戶端中包含了Yubikey支持,以便與DockerContentTrust一起使用。
Yubikey支持需要Yubico PIV圖書館%28與PIV工具捆綁在標(biāo)準(zhǔn)庫位置中。
委托角色簡化了公證可信集合中的協(xié)作者工作流,還允許在集合的委托內(nèi)容中具有細(xì)粒度的權(quán)限。本質(zhì)上,委托角色是目標(biāo)角色的受限版本,只允許在特定文件中簽名目標(biāo)。
委托角色被賦予自己的密鑰,這樣每個協(xié)作者都可以保留自己的私鑰,而無需管理員共享目標(biāo)密鑰或允許協(xié)作者對集合的所有目標(biāo)進(jìn)行寫訪問。
在添加任何委托之前,應(yīng)該將快照鍵旋轉(zhuǎn)到服務(wù)器。請注意,默認(rèn)情況下,這是為使用Docker Engine 1.11客戶端創(chuàng)建的新集合執(zhí)行的。這樣,委派角色將不需要快照鍵將自己的目標(biāo)發(fā)布到集合,因為服務(wù)器可以使用委托目標(biāo)發(fā)布有效的快照:
$ notary key rotate example.com/collection snapshot -r
這兒-r
指定旋轉(zhuǎn)遠(yuǎn)程服務(wù)器的鍵。
添加委托時,您必須獲得一個具有您希望委派的用戶的公鑰的x 509證書。將承擔(dān)此委托角色的用戶必須持有私鑰,才能與公證人簽署內(nèi)容。
一旦獲得了委托的x 509證書,就可以為該用戶添加一個委托:
$ notary delegation add example.com/collection targets/releases cert.pem --paths="delegation/path"
前面的示例演示了添加委托的請求。targets/releases
對槍example.com/collection
.代表團(tuán)名稱必須以targets/
有效,因為所有代表團(tuán)都是目標(biāo)作用的限制性版本。該命令添加x 509證書中包含的公鑰。cert.pem
到targets/releases
代表團(tuán)。
為targets/releases
委托角色簽名內(nèi)容時,委托用戶必須擁有與此公鑰相對應(yīng)的私鑰。此命令將此委托限制為僅在以下路徑名下發(fā)布內(nèi)容:delegation/path
對于給定的“委托/路徑”路徑,targets/releases
角色將能夠?qū)Α拔?路徑/content.txt”、“委托/路徑”等路徑進(jìn)行簽名。[醫(yī)]文件txt和“委托/path.txt”??梢栽诙禾柗指舻牧斜碇刑砑痈嗦窂?。--paths
,或者通過--all-paths
標(biāo)志允許此委托在任何路徑名下發(fā)布內(nèi)容。
發(fā)布之后,可以使用List命令查看委托:
$ notary delegation list example.com/collection ROLE PATHS KEY IDS THRESHOLD--------------------------------------------------------------------------------------------------------------- targets/releases delegation/path 729c7094a8210fd1e780e7b17b7bb55c9a28a48b871b07f65d97baf93898523a 1
你可以看到targets/releases
它的路徑和密鑰ID。如果您希望修改這些字段,可以使用notary delegation add
或notary delegation remove
關(guān)于這個角色的命令。
閾值1
中指定的鍵之一。KEY IDS
必須向這個代表團(tuán)公布。目前不支持1以外的閾值。若要完全刪除委托角色,或僅刪除單個鍵和/或路徑,請使用notary delegation remove
指揮:
$ notary delegation remove example.com/user targets/releases Are you sure you want to remove all data for this delegation? (yes/no)yes Forced removal (including all keys and paths) of delegation role targets/releases to repository "example.com/user" staged for next publish.
可以通過將鍵作為參數(shù)傳遞,以及/或--paths
旗子。使用--all-paths
若要清除此角色的所有路徑,請執(zhí)行以下操作。如果您在委托角色中指定了當(dāng)前的所有密鑰ID,則將完全刪除該角色。
若要將目標(biāo)添加到指定的委托角色,可以使用notary add
命令的--roles
旗子。
您必須已為此角色導(dǎo)入了適當(dāng)?shù)奈忻荑€。要做到這一點(diǎn),您可以運(yùn)行notary key import <KEY_FILE> --role user
使用私鑰PEM文件,或?qū)⑺借€PEM放在private/tuf_keys
如<KEY_ID>.key
帶著role
PEM標(biāo)頭設(shè)置為user
...
$ notary add example/collections delegation/path/target delegation_file.txt --roles=targets/releases
在前面的示例中,添加目標(biāo)delegation/path/target
去收集example/collections
準(zhǔn)備下一次出版。文件delegation_file.txt
是目標(biāo)delegation/path/target
使用委托角色targets/releases
此目標(biāo)的路徑是有效的,因為它以委托角色的有效路徑為前綴。
大notary list
和notary remove
命令也可以接受--roles
標(biāo)志指定要從其中列出或移除目標(biāo)的角色。默認(rèn)情況下,這在基礎(chǔ)上運(yùn)行。targets
角色。
若要從我們的代表團(tuán)中刪除此目標(biāo),請使用notary remove
具有相同標(biāo)志的命令:
$ notary remove example/collections delegation/path/target --roles=targets/releases
Docker Engine 1.10及以上版本支持使用targets/releases
委托作為可信圖像標(biāo)記的規(guī)范源(如果存在的話)。
跑步時docker pull
在Docker Engine 1.10上使用Docker Content Trust,Docker將嘗試搜索targets/releases
角色,并將返回到默認(rèn)的targets
如果不存在角色,則為。請注意,在搜索默認(rèn)值時targets
角色,碼頭1.10可能會接其他非-targets/releases
委托角色的簽名圖像(如果存在于此標(biāo)記中)。在Docker 1.11中,此行為被更改為docker pull
帶有DockerContentTrust的命令必須只提取由targets/releases
授權(quán)角色或targets
基本角色。
跑步時docker push
使用DockerContentTrust,DockerEngine 1.10將嘗試使用targets/releases
如果存在委托角色,則返回到targets
角色。在碼頭1.11,adocker push
而是嘗試與目標(biāo)%28ex直接下的所有委托角色簽名和推送:targets/role
但不是targets/nested/role
%29,用戶有簽名密鑰。如果存在委托角色,但用戶沒有簽名密鑰,則推送將失敗。如果不存在委托角色,則推送將嘗試與基簽名。targets
角色。
使用targets/releases
使用內(nèi)容信任推拉圖像的角色,按照上述步驟添加和發(fā)布公證委托角色。添加委托時,--all-paths
應(yīng)使用標(biāo)志允許對所有標(biāo)記進(jìn)行簽名。
公證員在其trust_dir
目錄,它是~/.notary
默認(rèn)或通常~/.docker/trust
啟用碼頭內(nèi)容信任時。在這個目錄中,trusted_certificates
在集合中存儲用于引導(dǎo)信任的證書,tuf
存儲要應(yīng)用于槍支的TUF元數(shù)據(jù)和更改器,以及private
存儲私鑰。
大root_keys
子目錄private
存儲根私鑰,而tuf_keys
存儲目標(biāo)、快照和委托私鑰。
? 2017 Docker, Inc.
根據(jù)ApacheLicense,版本2.0獲得許可。
Docker和Docker標(biāo)志是Docker公司在美國和/或其他國家的商標(biāo)或注冊商標(biāo)。
Docker,Inc.和其他各方也可以在這里使用的其他術(shù)語中擁有商標(biāo)權(quán)。