公证服务器配置文件
预计阅读时间:9分钟
本文档适用于正在运行自己的公证服务 并希望指定自定义选项的用户。
概述
公证服务器需要配置文件,并且必须使用-config
命令行上的选项指定配置文件的路径。
公证服务器还允许您增加/减少日志记录级别,而不必重新启动。
这是完整的服务器配置文件示例:
{
"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/"]
}
}
有关reporting
和logging
部分的详细信息,请参见有关常见公证配置部分的文档
。
服务器部分(必填)
例子:
"server": {
"http_addr": ":4443",
"tls_key_file": "./fixtures/notary-server.key",
"tls_cert_file": "./fixtures/notary-server.crt"
}
范围 | 必需的 | 描述 |
---|---|---|
http_addr |
是的 | 要侦听的TCP地址(IP和端口)。例子:
|
tls_key_file |
不 | 用于HTTPS的私钥的路径。必须与一起提供tls_cert_file ,或完全不提供。如果两者均未提供,则服务器使用HTTP而不是HTTPS。该路径是相对于配置文件目录的。 |
tls_cert_file |
不 | 用于HTTPS的证书的路径。必须与一起提供tls_key_file ,或完全不提供。如果两者均未提供,则服务器使用HTTP而不是HTTPS。该路径是相对于配置文件目录的。 |
trust_service部分(必填)
本部分配置远程信任服务(例如, 公证签名人)或本地内存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"
}
范围 | 必需的 | 描述 |
---|---|---|
type |
是的 | 必须是"remote" 或"local" |
hostname |
是,如果远程 | 远程信任服务的主机名 |
port |
是,如果远程 | 远程信任服务的GRPC端口 |
key_algorithm |
是,如果远程 | 用于生成存储在签名服务上的密钥的算法。有效值是"ecdsa" ,
"rsa" 和"ed25519" 。 |
tls_ca_file |
不 | 签署远程服务的TLS证书的根CA的路径。如果所述根CA不在系统的默认信任根中,则必须提供此参数。该路径是相对于配置文件目录的。 |
tls_client_key |
不 | 用于TLS相互认证的私钥的路径。必须tls_client_cert 与否一起提供
。该路径是相对于配置文件目录的。 |
tls_client_cert |
不 | 用于TLS相互认证的证书的路径。必须tls_client_key 与否一起提供
。该路径是相对于配置文件目录的。 |
存储部分(必填)
存储部分指定服务器应使用哪个存储后端来存储TUF元数据。仅支持MySQL或内存存储。
数据库存储示例:
"storage": {
"backend": "mysql",
"db_url": "user:pass@tcp(notarymysql:3306)/databasename?parseTime=true"
}
范围 | 必需的 | 描述 |
---|---|---|
backend |
是的 | 必须为"mysql" 或"memory" 。如果"memory" 选择,则将db_url
忽略。 |
db_url |
是的,如果没有 memory |
该
数据源名称来访问数据库。
(包括parseTime=true 在DSN中) |
身份验证部分(可选)
本节指定服务器的身份验证选项。目前,我们仅支持令牌身份验证。
例子:
"auth": {
"type": "token",
"options": {
"realm": "https://auth.docker.io",
"service": "notary-server",
"issuer": "auth.docker.io",
"rootcertbundle": "/path/to/auth.docker.io/cert"
}
}
这整个部分是可选的。但是,如果您希望对服务器进行身份验证,则需要以下必需的参数来进行配置。
令牌认证:
这是与Docker Registry版本2相同的身份验证的实现 。
范围 | 必需的 | 描述 |
---|---|---|
type |
是的 | 必须是"token" ; 所有其他值将导致不进行身份验证(其余参数将被忽略) |
options |
是的 | 令牌认证的选项。有关 参数的详细信息,请参阅 注册表令牌配置文档。 |
缓存部分(可选)
例子:
"caching": {
"max_age": {
"current_metadata": 300,
"consistent_metadata": 31536000,
}
}
范围 | 必需的 | 描述 |
---|---|---|
max_age |
不 | 缓存服务的最大生存时间(以秒为单位),以缓存角色的最新元数据和角色的校验和的元数据。在GET-ting元数据的缓存控制标头上设置此值。还必须在当前元数据的缓存控制标头上设置“必须重新验证”,因为每当将新元数据签名到存储库中时,当前元数据都可能会更改。尽管一致的元数据可能会被删除,但它永远都不应更改,因此最长期限可以是一个更高的值。 |
存储库部分(可选)
例子:
"repositories": {
"gun_prefixes": ["docker.io/", "my-own-registry.com/"]
}
范围 | 必需的 | 描述 |
---|---|---|
gun_prefixes |
不 | 此服务器接受的GUN前缀列表。以任何其他前缀开头的图像上的POST操作均以400拒绝,而GET / DELETE操作则以404拒绝。 |
热日志记录级别重载
目前,我们不支持完全重新加载公证配置文件。我们现在支持的是:
- 通过信令提高日志记录级别
SIGUSR1
- 通过信令降低日志记录级别
SIGUSR2
例子:
增加日志记录级别
$ kill -s SIGUSR1 PID
或者
$ docker container exec -i CONTAINER_ID kill -s SIGUSR1 PID
降低日志记录级别
$ kill -s SIGUSR2 PID
或者
$ docker container exec -i CONTAINER_ID kill -s SIGUSR2 PID
PID是它的进程ID,notary-server
如果您使用某种包装程序启动脚本或类似的东西运行容器,则PID可能不是PID 1进程。
您可以notary-server
通过获得PID
$ docker container exec CONTAINER_ID ps aux
或者
$ ps aux | grep "notary-server -config" | grep -v "grep"