©
本文档使用
php.cn手册 发布
本文档适用于那些希望指定自定义选项的运行自己的公证服务的人员。
公证签名人需要环境变量来加密私人密钥。它还需要一个配置文件,该文件是使用-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>提供。请参阅环境变量部分了解更多信息。 |
公证签名人以加密形式存储私钥。还会存储用于加密密钥的密码短语的别名。为了加密存储密钥和解密密钥以进行签名,密码必须作为环境变量传入。
例如,上面的配置指定默认密码别名为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=mypasswordexport NOTARY_SIGNER_PASSWORDALIAS2=mynewfancypassword
这样,所有新密钥都将使用密码进行加密和解密mynewfancypassword
,但使用密码短语加密的旧密钥mypassword
仍然可以解密。
旧密码的环境变量是可选的,但如果不提供旧密钥,公证签名者将无法解密旧密钥,使用这些密钥对数据签名的尝试将失败。
公证服务器配置文件
公证服务器和签名者共有的配置部分