?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
此文檔適用于任何想要運行自己的公證服務(wù)%28的人,例如那些希望使用帶有私人碼頭注冊中心%29的公證的人。運行公證服務(wù)需要您已經(jīng)熟悉使用碼頭發(fā)動機和碼頭組成...
用于測試和開發(fā)目的的完整公證服務(wù)的最快方法是在公證工程...
$ git clone https://github.com/docker/notary.git $ cd notary $ docker-compose up
這將構(gòu)建開發(fā)公證服務(wù)器和公證簽字人映像,并為公證服務(wù)器、公證簽字人和它們共享的MySQL數(shù)據(jù)庫啟動容器。MySQL數(shù)據(jù)存儲在卷中。
公證服務(wù)器和公證人簽名者使用存儲庫%29中的自簽名測試證書在相互驗證的TLS%28上進行通信,公證服務(wù)器在端口4443上偵聽HTTPS通信量。
默認(rèn)情況下,此開發(fā)公證服務(wù)器容器使用測試自簽名的tls證書運行.。為了能夠成功地連接到它,您必須在fixtures/root-ca.crt
...
例如,要使用OpenSSL進行連接:
$ openssl s_client -connect <docker host>:4443 -CAfile fixtures/root-ca.crt -no_ssl3 -no_ssl2
若要使用公證客戶端CLI進行連接,請參見開始文件。請注意,公證服務(wù)器和簽字人的版本應(yīng)大于或等于公證客戶端CLI,以確保功能兼容性,即如果您使用的是公證客戶端CLI 0.2。確保您使用的服務(wù)器和簽名者使用的是與0.2相同或更高版本的標(biāo)記。
自簽名證書的主題名稱和主題可選名稱為notary-server
,,,notaryserver
,和localhost
,因此,如果您的Docker主機不在localhost%28上--例如,如果您使用的是DockerMachine%29,則需要更新主機文件,使其名稱notary-server
與您的Docker主機的IP地址關(guān)聯(lián)。
公證服務(wù)器和公證簽字人JSON配置文件.預(yù)置圖像,如上面的發(fā)展圖像為您提供這些配置文件,并提供一些正常的默認(rèn)設(shè)置。
但是,對于在生產(chǎn)中運行,或者如果您只想更改開發(fā)服務(wù)上的默認(rèn)設(shè)置,您可能希望更改這些默認(rèn)值。
您可以覆蓋docker run
如果要傳遞不同的命令行選項,則為圖像發(fā)出命令。公證服務(wù)器和公證人簽名者都采用以下命令行參數(shù):
-config=<config file>
-指定JSON配置文件的路徑。
-debug
-傳遞此標(biāo)志使調(diào)試服務(wù)器在localhost:8080
調(diào)試服務(wù)器提供pprof和費瓦端點。%28請記住,對于正在運行的容器,這是本地主機--此端點不會從容器%29公開。
也可以在配置文件中設(shè)置此選項。
-logf=<format>
-此標(biāo)志設(shè)置日志的輸出格式??赡艿母袷绞恰癹son”和“l(fā)ogfmt”。
無法在配置文件中設(shè)置此選項,因為某些日志消息是在讀取配置文件之前在啟動時生成的。指定您自己的配置文件您完全可以使用自己的配置文件運行映像。您只需掛載配置目錄,然后將該配置文件的路徑作為參數(shù)傳遞給docker run
命令。使用環(huán)境變量重寫配置文件參數(shù)還可以通過設(shè)置窗體的環(huán)境變量來覆蓋配置的參數(shù)。NOTARY_SERVER_<var>
或NOTARY_SIGNER_<var>
...var
全帽子,"_"
-從配置JSON的頂層分隔鍵路徑。例如,如果您想重寫公證服務(wù)器配置的存儲URL:"storage": {
"backend": "mysql",
"db_url": "dockercondemo:dockercondemo@tcp(notary-mysql)/dockercondemo"
}您需要設(shè)置環(huán)境變量。NOTARY_SERVER_STORAGE_DB_URL
,因為db_url
在storage
節(jié)中的公證服務(wù)器配置JSON。請注意,不能覆蓋值為另一個映射的鍵。例如,設(shè)置NOTARY_SERVER_STORAGE='{"storage": {"backend": "memory"}}'
不會設(shè)置內(nèi)存存儲。只是沒能解析。您只能覆蓋其值為字符串或數(shù)字的鍵。例如,假設(shè)您想運行一個單獨的公證服務(wù)器實例:
帶著你自己的TLS證書和鑰匙
使用本地、內(nèi)存中的簽名器服務(wù),而不是使用公證簽名器。
使用本地、內(nèi)存中的tuf元數(shù)據(jù)存儲而不是使用mysql。
生成JSON格式的日志
這樣做的一種方法是:
生成您自己的TLS證書和密鑰,如server.crt
和server.key
,并將它們放在目錄中。/tmp/server-configdir
...
將以下配置文件寫入/tmp/server-configdir/config.json
*
{“服務(wù)器”:{“http”[醫(yī)]地址“:”:“4443”,“TLS”[醫(yī)]鍵[醫(yī)]文件“:”./server.key“,”TLS“[醫(yī)]CERT[醫(yī)]文件“:”/server.crt“},”信任“[醫(yī)]服務(wù):{“類型”:“遠程”,“主機名”:“公證人”,“端口”:“7899”,“tls”[醫(yī)]鈣[醫(yī)]文件“:”./root-ca.crt“,”key“[醫(yī)]算法:“ecdsa”,“tls”[醫(yī)]客戶[醫(yī)]證書:./公證-Server.crt“,”TLS“[醫(yī)]客戶[醫(yī)]鍵“:”...“.公證-Server.key”},“存儲”:{“后端”:“MySQL”,“db”[醫(yī)]服務(wù)器@tcp%28 mysql:3306%29/notaryserver?parseTime=True}
請注意,我們包括遠程信任服務(wù)和數(shù)據(jù)庫存儲類型,以演示環(huán)境變量如何覆蓋配置參數(shù)。
假設(shè)您已經(jīng)構(gòu)建或調(diào)出了公證服務(wù)器??坑诚?29,則運行以下命令%28:
$docker run\-p“4443:4443”\-v/tmp/server-configdir:/etc/docker/公證-server/\-e公證[醫(yī)]服務(wù)器[醫(yī)]信托[醫(yī)]服務(wù)[醫(yī)]類型=本地\-e公證人[醫(yī)]服務(wù)器[醫(yī)]儲物[醫(yī)]后端=內(nèi)存\-e公證[醫(yī)]服務(wù)器[醫(yī)]測井[醫(yī)]級=調(diào)試\公證[醫(yī)]server\-config=/etc/docker/notra-server/config.json\-logf=json{“l(fā)evel”:“info”,“msg”:“version:0.2,Git COMMIT:619f8cf”,“Time”:“2016-02-25T00:53:59Z”}{“l(fā)evel”:“info”,“msg”:“使用本地簽名服務(wù),這需要ED25519。忽略所有其他信任[醫(yī)]服務(wù)參數(shù),包括keyAlgorithm“、”time“:”2016-02-25T00:53:59Z“}{”level“:”info“、”msg“:”使用內(nèi)存后端“、”時間“:”2016-02-25T00:53:59Z“}{”level“:”info“、”msg“:”start Server“、”time“:”2016-02-25T00:53:59Z“{”Level“:”info“、”msg“:”啟用TLS“、”Time“:”2016-02-25T00:53}}}“}{”info“您可以使用碼頭組成通過設(shè)置卷、環(huán)境變量和重寫組成文件中公證服務(wù)器容器的默認(rèn)命令。在生產(chǎn)中部署的建議在從開發(fā)轉(zhuǎn)向生產(chǎn)時,必須考慮許多因素,以確保安全性和可伸縮性。證書公證存儲庫將樣例證書包含在固定目錄中。當(dāng)您使用所提供的docker-Compose.yml文件初始化開發(fā)服務(wù)時,這些示例證書將用于創(chuàng)建更類似于生產(chǎn)的環(huán)境。你必須獲得你的自己證書在生產(chǎn)部署中使用。公證存儲庫中的示例私鑰文件顯然是公共知識,在生產(chǎn)部署中使用它們是高度不安全的。證書目錄公證是一個基于用戶/客戶端的系統(tǒng),它在用戶的主目錄中搜索證書,~/.docker/trust
.要從命令行簡化使用公證,請創(chuàng)建一個別名,該別名映射用戶的trust
目錄到系統(tǒng)的ca-certificates
目錄。$ alias notary="notary -s https://<dtr-url> -d ~/.docker/trust --tlscacert /usr/local/share/ca-certificates/<dtr-url>.crt"數(shù)據(jù)庫服務(wù)器和簽名者都需要一個數(shù)據(jù)庫。這些應(yīng)該是具有不同用戶的單獨數(shù)據(jù)庫。用戶的權(quán)限應(yīng)該受到限制。我們建議將以下MySQL%28或等效的%29權(quán)限授予僅限于自己數(shù)據(jù)庫的用戶:
公證服務(wù)器數(shù)據(jù)庫用戶:SELECT, INSERT, UPDATE, DELETE
公證人簽署人數(shù)據(jù)庫用戶:SELECT, INSERT, DELETE
大多數(shù)生產(chǎn)用戶都希望通過運行服務(wù)器和簽名應(yīng)用程序的多個實例來提高可用性。這些可以任意和獨立地進行縮放。數(shù)據(jù)庫也可以獨立地進行縮放,但這是留給有經(jīng)驗的DBA和運營團隊使用的。典型的部署將如下圖所示:
二次
二次
在圖中,負(fù)載平衡器將外部通信量路由到公證服務(wù)器實例集群。如果需要%29簽名,或者需要b%29密鑰生成,這些用戶可以向公證人簽名實例發(fā)出請求。從公證服務(wù)器到公證簽字人集群的請求是通過內(nèi)部負(fù)載均衡器進行路由器的。
公證可以與CDN或其他緩存系統(tǒng)一起使用。所有對JSON文件的GET請求都可能被無限期緩存除URL匹配:
*/root.json
*/timestamp.json
對JSON文件的所有其他請求都包括正在請求的文件的sha256校驗和,因此是不可變的。對JSON文件的請求占所有公證請求的絕大多數(shù)。對JSON文件的GET以外的任何請求都不應(yīng)該緩存。
公證服務(wù)體系結(jié)構(gòu)
公證配置文件
? 2017 Docker, Inc.
根據(jù)ApacheLicense,版本2.0獲得許可。
Docker和Docker標(biāo)志是Docker公司在美國和/或其他國家的商標(biāo)或注冊商標(biāo)。
Docker,Inc.和其他各方也可以在這里使用的其他術(shù)語中擁有商標(biāo)權(quán)。