非常教程

Docker 17参考手册

公证 | Notary

签名者配置(公证) | Signer configuration (Notary)

本文档适用于那些希望指定自定义选项的运行自己的公证服务的人员。

概述

公证签名人需要环境变量来加密私人密钥。它还需要一个配置文件,该文件是使用-config标志在命令行上指定的路径。

这是一个完整的签名者配置文件示例; 请点击顶级JSON键以了解更多关于与该键相对应的配置部分:

{
  "server": {
    "http_addr": ":4444",
    "grpc_addr": ":7899",
    "tls_cert_file": "./fixtures/notary-signer.crt",
    "tls_key_file": "./fixtures/notary-signer.key",
    "client_ca_file": "./fixtures/notary-server.crt"
  },
  "logging": {
    "level": 2
  },
  "storage": {
    "backend": "mysql",
    "db_url": "user:pass@tcp(notarymysql:3306)/databasename?parseTime=true",
    "default_alias": "passwordalias1"
  },
  "reporting": {
    "bugsnag": {
      "api_key": "c9d60ae4c7e70c4b6c4ebd3e8056d2b8",
      "release_stage": "production"
    }
  }
}

服务器部分(必填)

在本例中,“server”指的是公证签字人的HTTP/GRPC服务器,而不是“公证服务器”。

例子:

"server": {
  "http_addr": ":4444",
  "grpc_addr": ":7899",
  "tls_cert_file": "./fixtures/notary-signer.crt",
  "tls_key_file": "./fixtures/notary-signer.key",
  "client_ca_file": "./fixtures/notary-server.crt"
}

参数

是否需要

描述

http_addr

侦听HTTP通信的TCP地址(IP和端口)。例如:“:4444”表示监听所有IP上的端口4444(因此所有接口,例如运行ifconfig时列出的那些接口)“127.0.0.1:4444”表示只侦听本地主机上的端口4444。这意味着除了本地服务器之外,服务器将不可访问(通过SSH隧道或仅在本地终端上)

grpc_addr

侦听GRPC流量的TCP地址(IP和端口)。例如:“:7899”表示监听所有IP上的端口7899(因此所有接口,如运行ifconfig时列出的那些接口)“127.0.0.1:7899”表示只监听本地主机上的7899端口。这意味着除了本地服务器之外,服务器将不可访问(通过SSH隧道或仅在本地终端上)

tls_key_file

私钥用于HTTPS的路径。该路径相对于配置文件的目录。

tls_cert_file

用于HTTPS的证书路径。该路径相对于配置文件的目录。

client_ca_file

要相互认证的可信根证书。如果提供,连接到公证签名者的任何客户端都必须拥有由此根签名的客户端证书。如果不提供,则不需要相互认证。该路径相对于配置文件的目录。

  • ":4444"意味着在所有IP上的端口4444上监听(因此所有接口,例如运行时列出的接口ifconfig
  • "127.0.0.1:4444"表示仅在本地主机上侦听端口4444。这意味着除了本地服务器之外,服务器将不可访问(通过SSH隧道或仅在本地终端上)
`grpc_addr` yes The TCP address (IP and port) to listen for GRPC traffic. Examples: 
  • ":7899"表示在所有IP上的端口7899上监听(因此所有接口,例如运行时列出的接口ifconfig
  • "127.0.0.1:7899"表示仅在本地主机上侦听端口7899。这意味着除了本地服务器之外,服务器将不可访问(通过SSH隧道或仅在本地终端上)
`tls_key_file` yes The path to the private key to use for HTTPS. The path is relative to the directory of the configuration file.   `tls_cert_file` yes The path to the certificate to use for HTTPS. The path is relative to the directory of the configuration file.   `client_ca_file` no The root certificate to trust for mutual authentication. If provided, any clients connecting to Notary signer will have to have a client certificate signed by this root. If not provided, mutual authentication will not be required. The path is relative to the directory of the configuration file.  

存储部分(必填)

这用于存储加密的私钥。目前,我们只支持MySQL或内存存储.

例子:

"storage": {
  "backend": "mysql",
  "db_url": "user:pass@tcp(notarymysql:3306)/databasename?parseTime=true",
  "default_alias": "passwordalias1"
}

参数

需要

描述

后端

必须是“mysql”或“内存”。如果选择“内存”,则会忽略db_url。

db_url

是(如果不是内存)

用于访问数据库的数据源名称。(注意:请包含parseTime = true作为DSN的一部分)

default_alias

是(如果不是内存)

此参数指定用于加密数据库中私钥的当前密码的别名。所有新私钥都将使用此密码进行加密,该密码也必须作为环境变量NOTARY_SIGNER_ <DEFAULT_ALIAS_VALUE>提供。请参阅环境变量部分了解更多信息。

环境变量(使用MySQL时需要)

公证签名人以加密形式存储私钥。还会存储用于加密密钥的密码短语的别名。为了加密存储密钥和解密密钥以进行签名,密码必须作为环境变量传入。

例如,上面的配置指定默认密码别名为passwordalias1...

如果使用此配置,则必须:

export NOTARY_SIGNER_PASSWORDALIAS1=mypassword

使该公证员签名者知道加密与密码的所有密钥mypassword,并解密存储与密码别名任何私钥passwordalias1与密码mypassword

旧密码也可以作为环境变量提供。

假设您想更改用于创建新密钥的密码(旋转密码并重新加密所有私钥尚不受支持)。

您可以将配置更改为:

"storage": {
  "backend": "mysql",
  "db_url": "user:pass@tcp(notarymysql:3306)/databasename?parseTime=true",
  "default_alias": "passwordalias2"
}

然后你可以设置:

export NOTARY_SIGNER_PASSWORDALIAS1=mypassword
export NOTARY_SIGNER_PASSWORDALIAS2=mynewfancypassword

这样,所有新密钥都将使用密码进行加密和解密mynewfancypassword,但使用密码短语加密的旧密钥mypassword仍然可以解密。

旧密码的环境变量是可选的,但如果不提供旧密钥,公证签名者将无法解密旧密钥,使用这些密钥对数据签名的尝试将失败。

相关信息

  • 公证服务器配置文件
  • 公证服务器和签名者共有的配置部分

docker, notary, notary-client, notary-server, notary server, notary-signer, notary signer

Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06