2009년 10월 8일 목요일

MySQL 보안 - SSL통신


MySQL의 서버와 클라이언트 사이의 통신을 SSL암호화하는 것이 가능하다.
SSL통신을 실행하려면 서버와 클라이언트 양쪽에 SSL을 구성할 필요가 있다.

SSL구성의 확인
mysql>SHOW VARIABLES LIKE 'have_openssl';

결과가 YES 또는 DISABLED이면 서버에 SSL구성되어 있는 것이다.  DISABLED인 경우 SSL은 구성되어있지만 ssl옵션을 붙여서 서버가 기동되지 않았다라는 뜻이다. NO인 경우는 SSL가 포함되어있지 않으므로 소스에서 부터 MySQL을 빌드할 필요가 있다.

SSL구성

configure옵션에서는 --with-ssl를 지정한다.
다만, --with-openssl-includes, --with-openssl-libs, --with-yassl옵션은 5.1.11-beta에서 폐지되었으므로 주의해야한다.

SSL의 구성
shell$ ./configure --with-ssl [=OpenSSL 인스톨 디렉토리]

OpenSSL인스톨 디렉토리를 지정하면 지정된 디렉토리에 있는 OpenSSL라이브러리를 사용한다.
디렉토리지정을 생략하면 소스 부속의 yaSSL(extra/yassl/)를 사용한다.

현재 OpenSSL을 사용할 경우 핸드쉐이크할 때 miss가 적다고 한다.
디렉토리를 지정해서 OpenSSL을 사용하는 것이 좋을 듯 싶다.