2019-09-12 03:56:54 -04:00
|
|
|
start_server {tags {"tls"}} {
|
|
|
|
if {$::tls} {
|
|
|
|
package require tls
|
|
|
|
|
|
|
|
test {TLS: Not accepting non-TLS connections on a TLS port} {
|
|
|
|
set s [redis [srv 0 host] [srv 0 port]]
|
|
|
|
catch {$s PING} e
|
|
|
|
set e
|
|
|
|
} {*I/O error*}
|
|
|
|
|
|
|
|
test {TLS: Verify tls-auth-clients behaves as expected} {
|
|
|
|
set s [redis [srv 0 host] [srv 0 port]]
|
|
|
|
::tls::import [$s channel]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {*error*} $e
|
|
|
|
|
2019-09-12 04:10:22 -04:00
|
|
|
r CONFIG SET tls-auth-clients no
|
2019-09-12 03:56:54 -04:00
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port]]
|
|
|
|
::tls::import [$s channel]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
2019-09-12 04:10:22 -04:00
|
|
|
|
2020-07-28 03:45:21 -04:00
|
|
|
r CONFIG SET tls-auth-clients optional
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port]]
|
|
|
|
::tls::import [$s channel]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
|
|
|
|
2019-09-12 04:10:22 -04:00
|
|
|
r CONFIG SET tls-auth-clients yes
|
2020-07-28 03:45:21 -04:00
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port]]
|
|
|
|
::tls::import [$s channel]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {*error*} $e
|
2019-09-12 04:10:22 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
test {TLS: Verify tls-protocols behaves as expected} {
|
|
|
|
r CONFIG SET tls-protocols TLSv1.2
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-tls1.2 0}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {*I/O error*} $e
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-tls1.2 1}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
|
|
|
|
|
|
|
r CONFIG SET tls-protocols ""
|
|
|
|
}
|
|
|
|
|
|
|
|
test {TLS: Verify tls-ciphers behaves as expected} {
|
|
|
|
r CONFIG SET tls-protocols TLSv1.2
|
|
|
|
r CONFIG SET tls-ciphers "DEFAULT:-AES128-SHA256"
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-cipher "-ALL:AES128-SHA256"}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {*I/O error*} $e
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-cipher "-ALL:AES256-SHA256"}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
|
|
|
|
|
|
|
r CONFIG SET tls-ciphers "DEFAULT"
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-cipher "-ALL:AES128-SHA256"}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
|
|
|
|
|
|
|
r CONFIG SET tls-protocols ""
|
|
|
|
r CONFIG SET tls-ciphers "DEFAULT"
|
|
|
|
}
|
|
|
|
|
|
|
|
test {TLS: Verify tls-prefer-server-ciphers behaves as expected} {
|
|
|
|
r CONFIG SET tls-protocols TLSv1.2
|
|
|
|
r CONFIG SET tls-ciphers "AES128-SHA256:AES256-SHA256"
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-cipher "AES256-SHA256:AES128-SHA256"}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
|
|
|
|
|
|
|
assert_equal "AES256-SHA256" [dict get [::tls::status [$s channel]] cipher]
|
|
|
|
|
|
|
|
r CONFIG SET tls-prefer-server-ciphers yes
|
|
|
|
|
|
|
|
set s [redis [srv 0 host] [srv 0 port] 0 1 {-cipher "AES256-SHA256:AES128-SHA256"}]
|
|
|
|
catch {$s PING} e
|
|
|
|
assert_match {PONG} $e
|
|
|
|
|
|
|
|
assert_equal "AES128-SHA256" [dict get [::tls::status [$s channel]] cipher]
|
|
|
|
|
|
|
|
r CONFIG SET tls-protocols ""
|
|
|
|
r CONFIG SET tls-ciphers "DEFAULT"
|
|
|
|
}
|
2020-12-11 11:31:40 -05:00
|
|
|
|
|
|
|
test {TLS: Verify tls-cert-file is also used as a client cert if none specified} {
|
|
|
|
set master [srv 0 client]
|
|
|
|
set master_host [srv 0 host]
|
|
|
|
set master_port [srv 0 port]
|
|
|
|
|
|
|
|
# Use a non-restricted client/server cert for the replica
|
|
|
|
set redis_crt [format "%s/tests/tls/redis.crt" [pwd]]
|
|
|
|
set redis_key [format "%s/tests/tls/redis.key" [pwd]]
|
|
|
|
|
|
|
|
start_server [list overrides [list tls-cert-file $redis_crt tls-key-file $redis_key] \
|
|
|
|
omit [list tls-client-cert-file tls-client-key-file]] {
|
|
|
|
set replica [srv 0 client]
|
|
|
|
$replica replicaof $master_host $master_port
|
|
|
|
wait_for_condition 30 100 {
|
|
|
|
[string match {*master_link_status:up*} [$replica info replication]]
|
|
|
|
} else {
|
|
|
|
fail "Can't authenticate to master using just tls-cert-file!"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-09-12 03:56:54 -04:00
|
|
|
}
|
|
|
|
}
|