4.6. TLS Erlang 分布

主要目的是允许在节点之间使用 TLS 进行 Erlang 分布,并能够使用 TCP 连接到某些节点。TLS 分布将增强节点之间数据迁移过程中的数据安全性。

本节介绍如何启用 TLS 分布以进行额外的验证和安全性。

参考:使用 TLS 进行 Erlang 分布

4.6.1. 生成证书

为了使 TLS 正确工作,必须至少指定一个公钥和一个证书。在以下示例(couch_ssl_dist.conf)中,PEM 文件包含 certificate 及其 private key

[{server,
  [{certfile, "</path/to/erlserver.pem>"},
   {secure_renegotiate, true}]},
 {client,
  [{secure_renegotiate, true}]}].

以下命令是生成证书(PEM)文件的示例。

$ openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
$ cat key.pem cert.pem > erlserver.pem && rm key.pem cert.pem

注意

这不是对特定到期期限、密钥大小或算法的认可。

4.6.2. 配置设置

要启用 TLS 分布,请确保在 vm.args 中设置自定义参数。

# Don't forget to override the paths to point to your cert and conf file!

-proto_dist couch
-couch_dist no_tls \"[email protected]\"
-ssl_dist_optfile <path/to/couch_ssl_dist.conf>

注意

  • no_tls 的默认值为 false。如果用户未设置任何 no_tls 标志,则所有节点将使用 TCP

  • 为了确保“搜索”功能正常工作,请确保为 clouseau 节点设置 no_tls 选项。默认情况下,这将是 "[email protected]"

no_tls 标志可以具有以下值

  1. 仅使用 TLS,设置为 false(默认值),例如

    -couch_dist no_tls false
    
  2. 仅使用 TCP,设置为 true,例如

    -couch_dist no_tls true
    
  3. 指定某些节点使用 TCP,其他节点使用 TLS,例如

    # Specify node1 and node2 to use TCP, others use TLS
    
    -couch_dist no_tls \"[email protected]\"
    -couch_dist no_tls \"[email protected]\"
    
    # Any nodes end with "@127.0.0.1" will use TCP, others use TLS
    
    -couch_dist no_tls \"*@127.0.0.1\"
    

    注意

    星号(*):匹配正则表达式的零个或多个出现。

    问号(?):匹配正则表达式的零个或一个出现。

4.6.3. 连接到 Remsh

使用连接到节点的远程 shell 启动 Erlang。

  • 如果节点使用 TCP

    $ ./remsh
    
  • 如果节点使用 TLS

    $ ./remsh -t <path/to/couch_ssl_dist.conf>