?
This document uses PHP Chinese website manual Release
本文檔適用于那些希望指定自定義選項的運行自己的公證服務
公證服務器需要配置文件,并且必須使用命令行中的-config
選項指定配置文件的路徑。
公證服務器還允許您增加/減少日志記錄級別,而無需重新啟動。
下面是一個完整的服務器配置文件示例;請單擊頂級JSON鍵,了解與該鍵對應的配置部分的更多信息:
{ "server": { "http_addr": ":4443", "tls_key_file": "./fixtures/notary-server.key", "tls_cert_file": "./fixtures/notary-server.crt" }, "trust_service": { "type": "remote", "hostname": "notarysigner", "port": "7899", "key_algorithm": "ecdsa", "tls_ca_file": "./fixtures/root-ca.crt", "tls_client_cert": "./fixtures/notary-server.crt", "tls_client_key": "./fixtures/notary-server.key" }, "storage": { "backend": "mysql", "db_url": "user:pass@tcp(notarymysql:3306)/databasename?parseTime=true" }, "auth": { "type": "token", "options": { "realm": "https://auth.docker.io/token", "service": "notary-server", "issuer": "auth.docker.io", "rootcertbundle": "/path/to/auth.docker.io/cert" } }, "logging": { "level": "debug" }, "reporting": { "bugsnag": { "api_key": "c9d60ae4c7e70c4b6c4ebd3e8056d2b8", "release_stage": "production" } }, "caching": { "max_age": { "current_metadata": 300, "consistent_metadata": 31536000, } }, "repositories": { "gun_prefixes": ["docker.io/", "my-own-registry.com/"] }}
例子:
"server": { "http_addr": ":4443", "tls_key_file": "./fixtures/notary-server.key", "tls_cert_file": "./fixtures/notary-server.crt"}
參數(shù) | 需要 | 描述 |
---|---|---|
http_addr | 是 | 要監(jiān)聽的TCP地址(IP和端口)。例如:“:4443”表示監(jiān)聽所有IP上的端口4443(因此所有接口,如運行ifconfig時列出的那些接口)“127.0.0.1:4443”表示只偵聽本地主機上的端口4443。這意味著除了本地服務器之外,服務器將不可訪問(通過SSH隧道或僅在本地終端上) |
tls_key_file | 否 | 私鑰用于HTTPS的路徑。必須與tls_cert_file一起提供,或根本不提供。如果沒有提供,服務器將使用HTTP而不是HTTPS。該路徑相對于配置文件的目錄。 |
tls_cert_file | 否 | 用于HTTPS的證書路徑。必須與tls_key_file一起提供,或根本不提供。如果沒有提供,服務器將使用HTTP而不是HTTPS。該路徑相對于配置文件的目錄。 |
":4443"
意味著在所有IP上的端口4443上偵聽(因此所有接口,例如運行時列出的接口ifconfig
)
"127.0.0.1:4443"
表示僅在本地主機上偵聽端口4443。這意味著除了本地服務器之外,服務器將不可訪問(通過SSH隧道或僅在本地終端上)
`tls_key_file` no The path to the private key to use for HTTPS. Must be provided together with `tls_cert_file`, or not at all. If neither are provided, the server will use HTTP instead of HTTPS. The path is relative to the directory of the configuration file. `tls_cert_file` no The path to the certificate to use for HTTPS. Must be provided together with `tls_key_file`, or not at all. If neither are provided, the server will use HTTP instead of HTTPS. The path is relative to the directory of the configuration file.
本節(jié)配置遠程信任服務,如公證人簽字人或本地內(nèi)存中的ED25519信任服務。
遠程信任服務示例:
"trust_service": { "type": "remote", "hostname": "notarysigner", "port": "7899", "key_algorithm": "ecdsa", "tls_ca_file": "./fixtures/root-ca.crt", "tls_client_cert": "./fixtures/notary-server.crt", "tls_client_key": "./fixtures/notary-server.key"}
本地信托服務示例:
"trust_service": { "type": "local"}
參數(shù) | 是否需要 | 描述 |
---|---|---|
type | 是 | 必須是“遠程”或“本地” |
hostname | 若為remote則是 | 遠程信任服務的主機名 |
key_algorithm | 若為remote則是 | 遠程信任服務的GRPC端口 |
key_algorithm | 若為remote則是 | 用于生成存儲在簽名服務上的密鑰的算法。有效值是“ecdsa”,“rsa”和“ed25519”。 |
tls_ca_file | 否 | 簽署遠程服務的TLS證書的根CA的路徑。如果所述根CA不在系統(tǒng)的默認信任根中,則必須提供此參數(shù)。該路徑相對于配置文件的目錄。 |
tls_client_key | 否 | 私鑰用于TLS相互認證的路徑。這必須與tls_client_cert一起提供,或根本不提供。該路徑相對于配置文件的目錄。 |
tls_client_cert | 否 | 證書用于TLS相互身份驗證的路徑。這必須與tls_client_key一起提供或根本不提供。該路徑相對于配置文件的目錄。 |
存儲部分指定服務器應該使用哪個存儲后端來存儲TUF元數(shù)據(jù)。只支持MySQL或內(nèi)存存儲。
DB存儲示例:
"storage": { "backend": "mysql", "db_url": "user:pass@tcp(notarymysql:3306)/databasename?parseTime=true"}
參數(shù) | 是否需要 | 描述 |
---|---|---|
backend | 是 | 必須是“mysql”或“內(nèi)存”。如果選擇“內(nèi)存”,則會忽略db_url。 |
db_url | 是的,如果不是內(nèi)存 | 用于訪問數(shù)據(jù)庫的數(shù)據(jù)源名稱。(注意:請包含parseTime = true作為DSN的一部分) |
本節(jié)指定服務器的身份驗證選項。目前,我們只支持令牌身份驗證。
例子:
"auth": { "type": "token", "options": { "realm": "https://auth.docker.io", "service": "notary-server", "issuer": "auth.docker.io", "rootcertbundle": "/path/to/auth.docker.io/cert" }}
注意,整個部分是可選的。但是,如果您想要對服務器進行身份驗證,那么您需要下面所需的參數(shù)來配置它。
令牌身份驗證:
這是Docker注冊表第2版使用的相同身份驗證的實現(xiàn)。(基于JWT令牌的認證后登錄。)
參數(shù) | 是否需要 | 描述 |
---|---|---|
類型 | 是 | 必須是“令牌”; 所有其他值將導致無認證(其余參數(shù)將被忽略) |
選項 | 是 | 令牌認證的選項。請參閱注冊表令牌配置文檔以獲取參數(shù)詳細信息。 |
例子:
"caching": { "max_age": { "current_metadata": 300, "consistent_metadata": 31536000, }}
參數(shù) | 是否需要 | 描述 |
---|---|---|
MAX_AGE | 否 | 緩存服務通過角色的校驗和緩存角色的最新元數(shù)據(jù)和元數(shù)據(jù)的最大時間(以秒為單位)。該值將在GET-ting元數(shù)據(jù)的緩存控制標頭上設置。請注意,must-revalidate也在當前元數(shù)據(jù)的緩存控制標頭上設置,因為無論何時將新的元數(shù)據(jù)登錄到回購中,當前的元數(shù)據(jù)都可能會更改。一致的元數(shù)據(jù)不應該改變,盡管可能會被刪除,所以最大年齡可能會更高。 |
例子:
"repositories": { "gun_prefixes": ["docker.io/", "my-own-registry.com/"]}
參數(shù) | 是否需要 | 描述 |
---|---|---|
gun_prefixes | 否 | 此服務器將接受的GUN前綴列表。以任何其他前綴開頭的映像上的POST操作將被400拒絕,并且GET / DELETE操作將被404拒絕。 |
目前我們還不支持完全重新加載公證配置文件。我們現(xiàn)在支持的是:
通過信令提高日志記錄級別SIGUSR1
通過信令降低日志記錄級別SIGUSR2
例子:
增加日志記錄級別
$ kill -s SIGUSR1 PID or $ docker exec -i CONTAINER_ID kill -s SIGUSR1 PID
減少日志記錄級別
$ kill -s SIGUSR2 PID or $ docker exec -i CONTAINER_ID kill -s SIGUSR2 PID
如果您使用某種包裝器啟動腳本或某些類型的容器運行容器,則PID是進程IDnotary-server
,并且可能不是PID 1進程。
你可以得到notary-server
通過的PID
$ docker exec CONTAINER_ID ps aux or $ ps aux | grep "notary-server -config" | grep -v "grep"
公證簽字人配置文件
公證服務器和簽名者常用的配置部分