Как вы контролируете срок действия SSL для MariaDB как для репликации, так и для клиентских сертификатов? - PullRequest
0 голосов
/ 12 марта 2020

Существует ряд инструментов для мониторинга истечения срока действия SSL для служб, доступных через HTTPS, например, мы используем https://github.com/prometheus/blackbox_exporter для получения предупреждений, когда срок действия сертификатов SSL истекает через <14 дней как для внутренних, так и для внешних служб. </p>

Мы используем кластер XtraDB Percona (т.е. MariaDB) с SSL для внешнего трафика и трафика репликации c. соответствующая конфигурация показана ниже:

$ less /etc/mysql/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
pxc_encrypt_cluster_traffic=ON
ssl-ca=/etc/ssl/xtradb_server_ca.pem
ssl-cert=/etc/ssl/xtradb_server_cert.pem
ssl-key=/etc/ssl/xtradb_server_key.pem

[client]
ssl-ca=/etc/ssl/xtradb_server_ca.pem
ssl-cert=/etc/ssl/xtradb_server_cert.pem
ssl-key=/etc/ssl/xtradb_server_key.pem

Что нам еще предстоит выяснить: Как вы отслеживаете срок действия SSL для сертификатов, загруженных mysqld.service?

Мы используем Ansible для развертывания новых сертификатов и выполнения повторного перезапуска mysqld.service на каждом хосте, однако было бы замечательно отслеживать и подтверждать, что эти сертификаты должным образом обновляются.

Есть ли общее решение для этого?

Ответы [ 2 ]

1 голос
/ 13 марта 2020

В настоящее время нет серверной переменной или функции API для определения периода проверки сертификата сервера.

Простой обходной путь (при условии, что secure_file_priv не установлен):

$ mysql -e "SHOW VARIABLES LIKE 'ssl_cert'"
+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| ssl_cert      | /etc/mysql/server-cert.pem |
+---------------+----------------------------+
$ mysql  -e "SELECT LOAD_FILE('/etc/mysql/server-cert.pem')\G" > server-cert.pem
$ openssl x509 -enddate -noout -in ./server-cert.pem
notAfter=Jan 22 10:11:10 2021 GMT
0 голосов
/ 19 марта 2020

Я поделился офлайн решением, см. https://mariadb.com/kb/en/ssltls-status-variables/!

В MariaDB есть переменные, которые отображают информацию об истечении срока действия SSL:

mysql> show status like 'ssl_server_not%';
+-----------------------+--------------------------+
| Variable_name         | Value                    |
+-----------------------+--------------------------+
| Ssl_server_not_after  | May 24 11:46:23 2020 GMT |
| Ssl_server_not_before | Feb 24 11:46:23 2020 GMT |
+-----------------------+--------------------------+
2 rows in set (0.00 sec)

Я обновлю Это решение, как только я выяснил, как

  1. Выставить их как метрики через https://github.com/prometheus/mysqld_exporter (открыто mysqld_exporter / Issues / 457 )
  2. Запрос переменных через https://github.com/free/sql_exporter
...