[MySQL] MySQL에서 SSL 인증서 사용하기
[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_ssl이 YES로 표시되면 인증서가 정상적으로 등록되어 사용중인것으로 확인할 수 있다.
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, 인증서통신, 인증서등록