polardbxengine/mysql-test/suite/xengine_auth_sec/t/ssl_mode.test

110 lines
8.9 KiB
Plaintext

# Purpose : To check cases related to the client option -ssl-mode
# Author : Prabeen Pradhan
# Date : 29th Dec 2015
#############################################################
CREATE USER 'user1'@'%' require ssl;
grant all on *.* to 'user1'@'%' ;
--error 2
--exec $MYSQL_CHECK --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=DISABLED mysql user
--error 1
--exec $MYSQL_SHOW --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=DISABLED mysql user user
--error 1
--exec $MYSQL_SLAP --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=DISABLED --create-schema=mysql
# Verification of mysqlimport
--exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=REQUIRED -e "create table mysql.test(a int)"
--exec echo "" > $MYSQL_TMP_DIR/test.txt
--error 1
--exec $MYSQL_IMPORT --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=DISABLED --local mysql $MYSQL_TMP_DIR/test.txt
--echo # Testing of all clients with ssl mode PREFERRED
--exec $MYSQL_CHECK --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=PREFERRED mysql user
--exec $MYSQL_SHOW --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=PREFERRED mysql user user
--exec $MYSQL_SLAP --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=PREFERRED --create-schema=mysql > $MYSQL_TMP_DIR/mysql_slap_output.txt
# Verification of mysqlimport
--exec $MYSQL_IMPORT --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=PREFERRED --local mysql $MYSQL_TMP_DIR/test.txt
--echo # Testing of all clients with ssl mode REQUIRED
--exec $MYSQL_CHECK --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=REQUIRED mysql user
--exec $MYSQL_SHOW --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=REQUIRED mysql user user
--exec $MYSQL_SLAP --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=REQUIRED --create-schema=mysql > $MYSQL_TMP_DIR/mysql_slap_output.txt
# Verification of mysqlimport
--exec $MYSQL_IMPORT --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=REQUIRED --local mysql $MYSQL_TMP_DIR/test.txt
--echo # Testing of all clients with ssl mode VERIFY_CA
--exec $MYSQL_CHECK --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem mysql user
--exec $MYSQL_SHOW --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem mysql user user
--exec $MYSQL_SLAP --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --create-schema=mysql > $MYSQL_TMP_DIR/mysql_slap_output.txt
# Verification of mysqlimport
--exec $MYSQL_IMPORT --host=127.0.0.1 -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --local mysql $MYSQL_TMP_DIR/test.txt
--echo # Testing of all clients with ssl mode VERIFY_IDENTITY
--exec $MYSQL_CHECK --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem mysql user
--exec $MYSQL_SHOW --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem mysql user user
--exec $MYSQL_SLAP --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --create-schema=mysql > $MYSQL_TMP_DIR/mysql_slap_output.txt
# Verification of mysqlimport
--exec $MYSQL_IMPORT --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --local mysql $MYSQL_TMP_DIR/test.txt
--echo # Tests related to deprecation of ssl options
--error 2
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--error 2
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --skip-ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--error 2
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=VERIFY_IDENTITY --ssl-verify-server-cert --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--echo # Tests related to invalid option of --ssl-mode
--error 1
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-mode=HelloWorld --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--echo # Tests related to valid values of --ssl-mode
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=DISABLED --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --user=root --ssl-mode=PREFERRED --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=REQUIRED --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--error 1
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert1.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--error 1
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=VERIFY_CA --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=VERIFY_IDENTITY --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--echo # Check behavior when --ssl-mode is not passed explicitly
--exec $MYSQL --host=127.0.0.1 -P $MASTER_MYPORT --user=root --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--echo # Check behavior when multiple times --ssl-mode is passed
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=root --ssl-mode=REQUIRED --ssl-mode=DISABLEd --ssl-mode=REQUireD --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA -e "SHOW STATUS LIKE 'ssl_cipher'"
--echo # Check the legacy options
--error 7
exec $MYSQL --user=root --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA --ssl-mode=REQUIRED --ssl=0 -e "SHOW STATUS LIKE 'ssl_cipher'";
--error 7
exec $MYSQL --user=user1 --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA --ssl-mode=DISABLED --ssl=1 -e "SHOW STATUS LIKE 'ssl_cipher'";
--error 7
exec $MYSQL --user=user1 --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA --ssl-mode=VERIFY_CA --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert1.pem --ssl=1 -e "SHOW STATUS LIKE 'ssl_cipher'";
--error 7
exec $MYSQL --user=user1 --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA --ssl-mode=REQUIRED --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert1.pem --ssl-verify_server_cert=0 -e "SHOW STATUS LIKE 'ssl_cipher'";
--error 7
exec $MYSQL --user=root --tls_version=TLSv1.2 --ssl-cipher=DHE-RSA-AES256-SHA --ssl-mode=REQUIRED --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert1.pem --ssl-verify_server_cert=1 -e "SHOW STATUS LIKE 'ssl_cipher'";
--echo # Cleanup
DROP USER 'user1'@'%';
DROP TABLE mysql.test;
--remove_file $MYSQL_TMP_DIR/mysql_slap_output.txt
--remove_file $MYSQL_TMP_DIR/test.txt