Spec-Zone.ru › CouchDB 3.5

Распределённая система Erlang с TLS

Основная цель — обеспечить использование TLS для распределённой системы Erlang между узлами с возможностью также подключаться к некоторым узлам через TCP. Использование TLS в распределённой системе повысит безопасность данных при их миграции между узлами.

В этом разделе описано, как включить TLS для распределённой системы, чтобы обеспечить дополнительную проверку и безопасность.

См. также: Использование TLS для распределённой системы Erlang

Создание сертификата

Для распределения данных с использованием TLS необходимо предоставить соответствующие сертификаты. В следующем примере (couch_dist.conf) сертификат cert.pem должен быть подписан доверенным корневым сертификатом, известным серверу, а файл erlserver.pem содержит «сертификат» и его «закрытый ключ».

[{server,
  [{cacertfile, "</absolute_path/to/ca-cert.pem>"},
   {certfile,   "</absolute_path/to/erlserver.pem>"},
   {secure_renegotiate, true},
   {verify, verify_peer},
   {fail_if_no_peer_cert, true}]},
 {client,
  [{cacertfile, "</absolute_path/to/ca-cert.pem>"},
   {keyfile,    "</absolute_path/to/key.pem>"},
   {certfile,   "</absolute_path/to/cert.pem>"},
   {secure_renegotiate, true},
   {verify, verify_peer}]}].

Для включения проверки можно использовать {verify, verify_peer}, но для проверки потребуются соответствующие сертификаты.

Пример создания сертификатов.

$ git clone https://github.com/rnewson/elixir-certs
$ cd elixir-certs
$ ./certs self-signed \
    --out-cert ca-cert.pem --out-key ca-key.pem \
    --template root-ca \
    --subject "/CN=CouchDB Root CA"
$./certs create-cert \
    --issuer-cert ca-cert.pem --issuer-key ca-key.pem \
    --out-cert cert.pem --out-key key.pem \
    --template server \
    --subject "/CN=<hostname>"
$ cat key.pem cert.pem >erlserver.pem

Примечание

  • Приведённые выше примеры не являются рекомендацией относительно конкретных сроков действия, размеров ключей или алгоритмов.

  • Если задан параметр verify_peer, следует также указать параметр server_name_indication.

  • В OTP 26 параметр {fail_if_no_peer_cert, true} следует использовать только на стороне сервера; в предыдущих версиях его можно указывать как на стороне сервера, так и на стороне клиента.

  • При создании сертификатов убедитесь, что Common Name (FQDN) в сертификате CA и сертификате различаются. Кроме того, FQDN в сертификате должен совпадать с именем хоста.

Параметры конфигурации

Чтобы включить 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 \"clouseau@127.0.0.1\"
-ssl_dist_optfile </absolute_path/to/couch_dist.conf>

Примечание

  • Значение по умолчанию no_tls — false. Если пользователь не задаёт флаг no_tls, все узлы будут использовать TCP.

  • Чтобы обеспечить работу «search», обязательно задайте параметр no_tls для узла clouseau. По умолчанию это будет "clouseau@127.0.0.1".

Флаг 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 '"node1@127.0.0.1"'
    -couch_dist no_tls \"node2@127.0.0.1\"
    # Any nodes end with "@127.0.0.1" will use TCP, others use TLS
    
    -couch_dist no_tls \"*@127.0.0.1\"

    Примечание

    Звёздочка (*): соответствует последовательности из нуля или более вхождений регулярного выражения.

    Вопросительный знак (?): соответствует нулю или одному вхождению регулярного выражения.

Подключение к Remsh

Запустите Erlang с удалённой оболочкой, подключённой к узлу.

  • Если узел использует TCP:

    $ ./remsh
  • Если узел использует TLS:

    $ ./remsh -t </absolute_path/to/couch_dist.conf>

Copyright © 2025 The Apache Software Foundation — Licensed under the Apache License 2.0
https://docs.couchdb.org/en/3.5.1/cluster/tls_erlang_distribution.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API