2007년 6월 20일 수요일

apache ssl 관련

ssl은 신용카드 정보, 의료 기록, 법률 문서와 전자 상거래 애플리케이션과 같은 가장 기밀을 다루는 트랜잭션(transaction)들의 전송에 이용되는 것을 허용할 수 있도록 하는 요건을 실현하기 위한 것이다. 라고 http://kldp.org/HOWTO/html/SSL-RedHat-HOWTO/ssl-redhat-howto-2.html 여기에 나온다.
우선 비밀키를 사용하려면 openssl를 설치해야한다.
간단한 명령
# openssl genrsa -des3 -out server.key 1024
# openssl rsa -in server.key -out server.key.insecure
# openssl req -new -key server.key -out server.csr
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

생성된 파일들을 apache ssl관련 디렉토리에 이동 시킨다.
apache config 파일을 설정해야 하는데 ssl 443번을 이용하기에 가상호스트로 설정을 한다.
가상 호스트 설정에서
SSLEngine ON
SSLCertificateFile   crt 파일 절대 경로명
SSLCertificateKeyFile    key파일 절대 경로명

이 상위에 나오고 그 다음에 필요한 사항들을 설정해주면 된다.
특정 디렉토리만 ssl을 사용하게 되면 편하게 사용할 수 있을 것이다.
(Directory "~/~/~/ssl")
SSLRequireSSL
(/Directory)
(Directory "~/~/~/cgi-bin)
SSLOptions +StdEnvVars
(/Directory)

StdEnvVars에 대해서는 When this option is enabled, the standard set of SSL related CGI/SSI environment variables are created. This per default is disabled for performance reasons, because the information extraction step is a rather expensive operation. So one usually enables this option for CGI and SSI requests only. 이렇다는데...

마무리로 인증서를 설정하고 나서 apache를 실행이나 재시작 하는경우 ssl관련 패스워드를 물어본다. 이 부분을 없앨려면 openssl rsa -in filename.key-out new_filename.key으로 key파일을 변경해서 사용하면 된다.

관련 url :
http://kldp.org/HOWTO/html/SSL-RedHat-HOWTO/ssl-redhat-howto-2.html