-
Notifications
You must be signed in to change notification settings - Fork 46
SSL support #220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SSL support #220
Conversation
4e35a88 to
177b62f
Compare
Totktonada
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the patchset!
I don't feel myself very professional around encryption/openssl topics, so, please, take my review as 'something that a random guy can add here'.
Everything looks meaningful, it is what I can say :)
I left several questions/doubts, they're based on the ssl module documentation. Also a few stylistic comments.
The patchset looks good to me. Please, glance on my comments, but they all looks as non-critical and can be passed over.
177b62f to
090f2d2
Compare
|
Issue in WSL actions repository: Vampire/setup-wsl#28 |
DifferentialOrange
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems awesome. Thank you! I have left several minor comments.
|
Regarding WSL: we may use WSL 1 as a workaround: https://github.com/tarantool/tarantool-python/actions/runs/2509312684 - name: Install test requirements
run: pip install -r requirements-test.txt
+ - run: wsl --set-default-version 1
+
- name: Setup WSL for tarantool
uses: Vampire/setup-wsl@v1
with:
|
488693a to
ae172fc
Compare
It works, thank you! |
d8acf41 to
aa0c6e2
Compare
DifferentialOrange
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be LGTM after resolving/ignoring remaining comments.
aa0c6e2 to
4b498ad
Compare
The patch adds support for using SSL to encrypt the client-server communications [1]. 1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption Part of #217
d4c0ea4 to
831100c
Compare
The workflow uses Tarantool Enterprise Edition. It does not run for outside pull requests by default. Such pull requests may be labeled with `full-ci`. To avoid security problems, the label must be reset manually for every run. Closes #217
831100c to
66c732e
Compare
Overview
This release features SSL support. To use SSL, pass SSL parameters
on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file,
ssl_ca_file=client_ca_file,
ssl_ciphers=client_ciphers)
ConnectionPool and MeshConnection also support these parameters.
See Tarantool Enterprise Edition manual for details [1].
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
Overview
This release features SSL support. To use SSL, pass SSL parameters
on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file,
ssl_ca_file=client_ca_file,
ssl_ciphers=client_ciphers)
ConnectionPool and MeshConnection also support these parameters.
See Tarantool Enterprise Edition manual for details [1].
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
Overview
This release features SSL support. To use SSL, pass SSL parameters
on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file,
ssl_ca_file=client_ca_file,
ssl_ciphers=client_ciphers)
ConnectionPool and MeshConnection also support these parameters.
See Tarantool Enterprise Edition manual for details [1].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
Overview
This release features SSL support.
To use encrypted connection with Tarantool Enterprise Edition
instance, pass "ssl" `transport` parameter on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl")
If server uses trusted certificate authorities (CA) file, you must
set private SSL key file with `ssl_key_file` parameter and SSL
certificate file with `ssl_cert_file` parameter. If server not
uses CA file, these parameters are optional.
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file)
To verify the server, set client trusted certificate
authorities (CA) file with `ssl_ca_file` parameter:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ca_file=client_ca_file)
To set SSL ciphers, set them with `ssl_ciphers` parameter as
a colon-separated (:) string:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ciphers=client_ssl_ciphers)
ConnectionPool and MeshConnection also support these parameters.
mesh = tarantool.MeshConnection(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
pool = tarantool.ConnectionPool(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
See Tarantool Enterprise Edition manual for details [1].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
Overview
This release features SSL support.
To use encrypted connection with Tarantool Enterprise Edition
instance, pass "ssl" `transport` parameter on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl")
If server uses trusted certificate authorities (CA) file, you must
set private SSL key file with `ssl_key_file` parameter and SSL
certificate file with `ssl_cert_file` parameter. If server not
uses CA file, these parameters are optional.
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file)
To verify the server, set client trusted certificate
authorities (CA) file with `ssl_ca_file` parameter:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ca_file=client_ca_file)
To set SSL ciphers, set them with `ssl_ciphers` parameter as
a colon-separated (:) string:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ciphers=client_ssl_ciphers)
ConnectionPool and MeshConnection also support these parameters.
mesh = tarantool.MeshConnection(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
pool = tarantool.ConnectionPool(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
See Tarantool Enterprise Edition manual for details [1].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
Overview
This release features SSL support.
To use encrypted connection with Tarantool Enterprise Edition
instance, pass "ssl" `transport` parameter on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl")
To verify the server, set client trusted certificate
authorities (CA) file with `ssl_ca_file` parameter:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ca_file=client_ca_file)
If the server authenticates clients using certificates issued by
given CA, you must provide private SSL key file with `ssl_key_file`
parameter and SSL certificate file with `ssl_cert_file` parameter.
Otherwise, these parameters are optional.
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file)
To set SSL ciphers, set them with `ssl_ciphers` parameter as
a colon-separated (:) string:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ciphers=client_ssl_ciphers)
ConnectionPool and MeshConnection also support these parameters.
mesh = tarantool.MeshConnection(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
pool = tarantool.ConnectionPool(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
See Tarantool Enterprise Edition manual for details [1].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
Overview
This release features SSL support.
To use encrypted connection with Tarantool Enterprise Edition
instance, pass "ssl" `transport` parameter on connect:
con = tarantool.Connection(
host, port,
user=user,
password=pass,
transport="ssl")
To verify the server, set client trusted certificate
authorities (CA) file with `ssl_ca_file` parameter:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ca_file=client_ca_file)
If the server authenticates clients using certificates issued by
given CA, you must provide private SSL key file with `ssl_key_file`
parameter and SSL certificate file with `ssl_cert_file` parameter.
Otherwise, these parameters are optional.
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_key_file=client_key_file,
ssl_cert_file=client_cert_file)
To set SSL ciphers, set them with `ssl_ciphers` parameter as
a colon-separated (:) string:
con = tarantool.Connection(
host, port,
user=user,
password=password,
transport="ssl",
ssl_ciphers=client_ssl_ciphers)
ConnectionPool and MeshConnection also support these parameters.
mesh = tarantool.MeshConnection(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
pool = tarantool.ConnectionPool(
addrs={
"host": host,
"post": port,
"transport": "ssl",
"ssl_key_file": client_key_file,
"ssl_cert_file": client_cert_file,
"ssl_ca_file": client_ca_file,
"ssl_ciphers": client_ssl_ciphers,
},
user=user,
password=password)
See Tarantool Enterprise Edition manual for details [1].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
Breaking changes
There are no breaking changes in the release.
New features
* SSL support (PR #220, #217).
Testing
* Tarantool Enterprise testing workflow on GitHub actions (PR #220).
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on a similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on a similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on a similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on a similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on a similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
This patch adds support for using SSL to encrypt the client-server
communications [1]. The patch is based on a similar patch in
tarantool/tarantool-python connector [2].
To use SSL encrypted connection, use Connection parameters:
conn = asynctnt.Connection(host='127.0.0.1',
port=3301,
transport=asynctnt.Transport.SSL,
ssl_key_file='./ssl/host.key',
ssl_cert_file='./ssl/host.crt',
ssl_ca_file='./ssl/ca.crt',
ssl_ciphers='ECDHE-RSA-AES256-GCM-SHA384')
If Tarantool server uses "ssl" transport, client connection also need to
use asynctnt.Transport.SSL transport. If server side had ssl_ca_file
set, ssl_key_file and ssl_cert_file are mandatory from the client side,
otherwise optional. CA file and ciphers are optional. See available
ciphers in Tarantool EE documentation [3].
1. https://www.tarantool.io/en/enterprise_doc/security/#enterprise-iproto-encryption
2. tarantool/tarantool-python#220
3. https://www.tarantool.io/en/enterprise_doc/security/#supported-ciphers
Closes igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
To run SSL tests, use Tarantool Enterprise 2.10 or newer and set TEST_TT_SSL=TRUE flag. The patch is based on a similar patch in tarantool/tarantool-python connector [1]. 1. tarantool/tarantool-python#220 Follows up igorcoding#22
The patch adds support for using SSL to encrypt the client-server communications.
Also it adds a workflow that uses Tarantool Enterprise Edition. It does not run for outside pull requests by default. Such pull requests may be labeled with
full-ci. To avoid security problems, the label must be reset manually for every run.Closes #217
Please be careful. I don't program in the Python. So there may be mistakes in basic and idiomatic things.