programing

복제 및 클라이언트 인증서 모두에 대해 MariaDB SSL 만료 기간을 모니터링하려면 어떻게 해야 합니까?

shortcode 2023. 1. 19. 07:18
반응형

복제 및 클라이언트 인증서 모두에 대해 MariaDB SSL 만료 기간을 모니터링하려면 어떻게 해야 합니까?

HTTPS 경유로 이용할 수 있는 서비스의 SSL 유효기간을 감시하기 위한 툴이 다수 있습니다.예를 들어 내부 서비스 및 외부 서비스 모두에서 14일 이내에 SSL 증명서가 만료되면 https://github.com/prometheus/blackbox_exporter을 사용하여 경보를 수신합니다.

Percona의 XtraDB 클러스터(예: MariaDB)와 SSL을 사용하여 프런트 엔드 트래픽과 레플리케이션 트래픽을 모두 처리합니다.관련 설정을 다음에 나타냅니다.

$ 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 유효기간을 감시하려면 어떻게 해야 합니까?

Ansible을 사용하여 새 인증서를 배포하고 다음 작업을 롤링 재시작합니다.mysqld.service그러나 이러한 인증서가 올바르게 업데이트되고 있는지 모니터링하고 확인하는 것이 좋습니다.

이에 대한 일반적인 해결 방법이 있습니까?

현재 서버 증명서의 유효기간을 결정하는 데 사용할 수 있는 서버 변수 또는 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

솔루션이 오프라인에서 공유되었습니다.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_disc/disc/457 열기)
  2. https://github.com/free/sql_exporter에서 변수를 조회합니다.

언급URL : https://stackoverflow.com/questions/60659774/how-do-you-monitor-mariadb-ssl-expiration-for-both-replication-and-client-certif

반응형