DBAtlas · 데이터베이스 운영 아틀라스

TLS 강제, 비TLS 연결 찾기, 재시작 없이 인증서 갱신

MySQL보안

명령어

SELECT @@require_secure_transport, @@tls_version, @@ssl_ca, @@ssl_cert;
SELECT * FROM performance_schema.tls_channel_status
WHERE PROPERTY IN ('Enabled', 'Current_tls_version', 'Current_tls_cert', 'Ssl_server_not_after');

-- Active connections and their TLS versions (empty = no TLS)
SELECT t.PROCESSLIST_USER AS user, t.PROCESSLIST_HOST AS host, t.CONNECTION_TYPE, sv.VARIABLE_VALUE AS tls_version
FROM performance_schema.threads t
LEFT JOIN performance_schema.status_by_thread sv ON sv.THREAD_ID = t.THREAD_ID AND sv.VARIABLE_NAME = 'Ssl_version'
WHERE t.TYPE = 'FOREGROUND' AND t.PROCESSLIST_USER IS NOT NULL;

SET PERSIST require_secure_transport = ON;
-- After copying the new certificate files
ALTER INSTANCE RELOAD TLS;

하는 일

서버 TLS 설정, 인증서 만료일, 각 연결의 TLS 사용 여부를 보여 준다. 암호화되지 않은 TCP 연결을 완전히 금지하고 서버를 멈추지 않고 인증서를 갱신한다.

사용 시점

보안 감사/컴플라이언스, 인증서 만료 전, 암호화 없이 접속하는 레거시 클라이언트를 추적할 때.

주의

require_secure_transport=ON은 Unix socket 및 shared memory 연결에 영향을 주지 않으며 이들은 안전한 것으로 간주된다. 활성화 전에 TLS 없이 접속하는 클라이언트를 찾아야 하며, 그렇지 않으면 3159 오류로 실패한다. ALTER INSTANCE RELOAD TLS는 기존 연결이 아닌 새 연결에만 적용된다. 인증서 파일이 유효하지 않으면 오류를 내고 기존 인증서를 유지한다. 자동 생성된 self-signed 인증서는 VERIFY_CA / VERIFY_IDENTITY를 사용하는 클라이언트가 검증할 수 없으므로 운영 환경에서는 자체 CA가 서명한 인증서를 사용한다.

DBAtlas에서 열기 →

관련 항목