MySQL, MariaDB

[MySQL] MySQL에서 SSL 인증서 사용하기

SungWookKang 2023. 11. 9. 14:55
반응형

[MySQL] MySQL에서 SSL 인증서 사용하기

 

l  Version : MySQL 8.0

 

MySQL에서 SSL 통신을 위해서는 인증서를 사용하게 되는데, 이때 인증서는 MySQL을 시작할 때 자동으로 생성되기도 하며, 수동으로 생성할 경우 openssl 등을 사용하여 생성할 수 있다. 또한 타사 서비스와 연동이 필요한 경우 타사의 인증서를 등록해서 사용할 경우가 있는데, 이때 pem 확장자 형식으로 인증서를 변환해서 사용할 수 있다.

 

MySQL 시작 시 생성되는 인증서는 보통 데이터 디렉토리(data directory)에 생성되며 아래와 같은 인증서 파일이 생성된다.

 

l  ca.pem : self-signed CA cetificate

l  ca-key.pem : CA private key

l  private_key.pem

l  public_key.pem

l  server-cert.pem : Server certificate

l  server-key.pem : Server private key

l  client-cert.pem : Client certificate

l  client-key.pem : Client private key

 

 

현재 서버의 인증서를 다른 서버에 등록하여 사용할 때에는 ca.pem, server-cert.pem, server-key.pem 파일을 복사하여 다른 MySQL 서버에 등록하여 사용할 수 있다. 파일을 복사하였으면, my.cnf에서 인증서의 위치를 설정하여 서비스에 사용할 수 있도록 해야한다.

[my.cnf]

[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem

 

my.cnf 수정이 완료되었으면 mysql을 재시작 한다. mysql에 접속하여 SSL과 관련된 상태를 살펴보면 현재 인증서 작동 유무를 확인할 수 있다. have_openssl, have_sslYES로 표시되면 인증서가 정상적으로 등록되어 사용중인것으로 확인할 수 있다.

 

 

 

MySQL 접근을 위한 사용자 계정 생성시 SSL을 사용한 권한을 생성할 때에는 require SSL을 명시하여 생성한다.

grant all privileges on *.* to 'app_user'@'%' identified by 'password' require SSL;

 

CLI에서 SSL을 사용한 접속은 아래 스크립트처럼 클라이언트의 인증서키를 명시하고 접속한다.

mysql -uapp_user -p -h172.0.0.1 --ssl --ssl-ca=cert.pem

 

 

 

2023-11-09 / Sungwook Kang / http://sungwookkang.com

 

MySQL, SSL, 인증서통신, 인증서등록

반응형