2009년 10월 11일 일요일

MySQL 보안 - SSL통신2

서버측 키 생성

■private key 파일 생성

MySQL서버가 사용하는 private key파일(server-key.pem), Certificate Request파일(server-csr.pem)을 작성한다. ( 파일명은 임의로 붙여도 된다. )

※private key파일과 Certificate Request파일 작성
root@shell# openssl req -new -nodes -keyout server-key.pem -out server-csr.pem -days 1000

--nodes를 빼면 pass phrase이 요구되는 키를 작성한다. Common Name ( ....)[] : 에는 서버의 FQDN을 입력해야한다.
또 다음처럼 조작하더라도 같은 결과를 얻을 수 있다.

※make PRIVATE KEY
root@shell# openssl genrsa -des3 -out server-key.pem 1024

※remove pass phrase
root@shell# openssl rsa -in server-key.pem -out server-key.pem

※make CERTIFICATE REQUEST
root@shell# openssl req -new -key server-key.pem -out server-csr.pem -days 1000

■자기 서명 파일 생성
X.509 CERTIFICATE 파일(server-cert.pem)을 작성한다. 스스로 사인(자기서명)을 해 둔다.

※서명
root@shell# openssl x509 -in server-csr.pem -out server-cert.pem -req -signkey server-key.pem -days 1000

■private key 파일과 자기서명 파일의 동시 작성
또, 지금까지의 순서를 정리해서 한번에 private key 파일과 자기서명 파일을 작성할 수 있다.

root@shell# openssl req -new -x509 -nodes -keyout server-key.pem -out server-cert.pem -days 1000

■my.cnf설정
키를 작성했으면 mysqld옵션에 지정해 둔다.

[mysqld]
ssl
ssl-key=/usr/local/mysql/secu/server-key.pem
ssl-cert=/usr/local/mysql/secu/server-cert.pem #주의: 서명한 파일.

#ssl-ca=/usr/local/mysql/secu/ca_cert.pem
#ssl-ca는 CA(Certificate Authority) 증명서이다.

제 3자 인증기관 증명이 필요한 경우에는 server-csr.pem파일( Certificate Request)을 해당 기관에 보낸다. 그리고 인증기관으로부터 받은 서명확인완료 파일을 ssl-cert옵션에 지정한다.
또, ssl-ca나 ssl-capath를 지정할 필요가 있다.


클라이언트 키 생성

클라이언트 키 생성도 서버에서와 마찬가지로 만드는 법은 같다.