tarantool / tarantool/doc

config: new `iproto.ssl` section

Open
#5,485 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
CSS
Stars
15
Forks
49
Avg merge
1d 13h
Merged PRs (30d)
3

Description

A new iproto.ssl section has been introduced. It has the following
options.

  • iproto.ssl

SSL parameters required for encrypted connections. These parameters
would be used to set up SSL IProto sockets and to connect to other
instances which require certificate authority (CA).

  • iproto.ssl.ca_file

(Optional) A path to a trusted certificate authorities (CA) file. If not
set, the peer won't be checked for authenticity.

Both a server and a client can use the ca_file parameter:

  • If it's on the server side, the server verifies the client.
  • If it's on the client side, the client verifies the server.
  • If both sides have the CA files, the server and the client verify each
    other.
  • iproto.ssl.ssl_cert

A path to an SSL certificate file:

  • For a server, it's mandatory.
  • For a client, it's mandatory if the ca_file parameter is set for a
    server; otherwise, optional.
  • iproto.ssl.ssl_ciphers (Optional) A colon-separated (:) list of SSL
    cipher suites the connection can use. Note that the list is not
    validated: if a cipher suite is unknown, Tarantool ignores it, doesn't
    establish the connection, and writes to the log that no shared cipher
    was found.

  • iproto.ssl.ssl_key A path to a private SSL key file:

  • For a server, it's mandatory.
  • For a client, it's mandatory if the ca_file parameter is set for a
    server; otherwise, optional.

If the private key is encrypted, provide a password for it in the
ssl_password or ssl_password_file parameter

  • iproto.ssl.ssl_password

(Optional) A password for an encrypted private SSL key provided using
ssl_key. Alternatively, the password can be provided in
ssl_password_file.

Tarantool applies the ssl_password and ssl_password_file parameters
in the following order:

  • If ssl_password is provided, Tarantool tries to decrypt the private
    key with it.
  • If ssl_password is incorrect or isn't provided, Tarantool tries all
    passwords from ssl_password_file one by one in the order they are
    written.
  • If ssl_password and all passwords from ssl_password_file are
    incorrect, or none of them is provided, Tarantool treats the private
    key as unencrypted.
  • iproto.ssl.ssl_password_file (Optional) A text file with one or more
    passwords for encrypted private SSL keys provided using ssl_key
    (each on a separate line). Alternatively, the password can be provided
    in ssl_password.

This section is a replacement for the parameters
iproto.listen.*.params.ssl_* and iproto.advertise.*.params.ssl_*.

The hints that redirect iproto.listen.*.params.ssl_* and
iproto.advertise.*.params.ssl_* to <uri>.params.ssl_* should be
marked as ones overwriting iproto.ssl options and marked for advanced
use only with a hint that the user is likely want to use iproto.ssl.
Also, SSL Tarantool examples should be changed w.r.t. new section
iproto.ssl instead.
Requested by @georgiy-belyanin in https://github.com/tarantool/tarantool/commit/a54a406dd26a2ccd3072c37dca0547214c819894.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate the configuration reference for iproto.listen..params.ssl_ and iproto.advertise..params.ssl_, along with the SSL Tarantool examples. Update them to use iproto.ssl, mark the legacy hints as overwriting and advanced-only, and preserve the documented option behavior and migration guidance.

Written by the indexing model from the issue text.

Assessment

Domain
documentation, security
Issue type
Documentation
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.