웹서비스를 위해 가장 많이 사용하는 Apache, Nginx, Lighttpd (요즘은 많이 쓰지 않죠 ^^;;) 의 경우
각각 SSL 보안서버인증서를 어떻게 설정하는지 간략하게 적어보았습니다.
1. Apache
아래와 같이 설정하고 Apache 데몬을 재시작 합니다.
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.domain.com
DocumentRoot /var/www/site1
SSLEngine on
SSLCertificateFile /path/to/www_domain_com.crt
SSLCertificateKeyFile /path/to/www_domain_com.key
SSLCertificateChainFile /path/to/rootCA.crt
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain2.com
DocumentRoot /var/www/site2
SSLEngine on
SSLCertificateFile /path/to/www_domain2_com.crt
SSLCertificateKeyFile /path/to/www_domain2_com.key
SSLCertificateChainFile /path/to/rootCA.crt
</VirtualHost>
2. Nginx
설정파일에 아래와 같이 추가하고
server {
listen 443 ssl;
server_name www.domain.com;
ssl_certificate /usr/share/ssl/certs/www_domain_com_cert.pem;
ssl_certificate_key /usr/share/ssl/private/www_domain_com_key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
(이하 설정)
.....................
}
단, 위 설정을 하기 전에 cert 파일에 root 키 파일 내용을 추가해야 합니다.
보통 인증서 발급을 받으면 key, cert 파일과 함께 root 키 파일도 제공합니다.
# cat root.cer >> www_domain_com_cert.pem
3. lighttpd
※ 참고 : http://redmine.lighttpd.net/projects/1/wiki/Docs:SSL
vi /etc/lighttpd/lighttpd.conf
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/to/path/domain_com_key.pem"
ssl.ca-file = "/to/path/domain_com_cert.pem"
server.name = "www.domain.com"
server.document-root = "/home_path/www"
server.errorlog = "/weblog_path/ssl-domain_error_log"
accesslog.filename = "/weblog_path/ssl-domain_error_log"
}
단, 아래와 같이 key, cert 파일을 하나의 파일로 만드는 작업이 필수입니다.
cat private/www_domain_com.key certs/www_domain_com.cert > www_domain_com.cert
이렇게 private / cert 를 합하여 인증서 파일을 만듭니다.
# Tip 하나 - key 파일 비밀번호 없애기
보안서버인증서를 발급받아 본 분들을 알겠지만 보통 인증서 발급시에 비밀번호를 입력하는데
이 비밀번호가 웹서버 데몬을 재시작할 때 비밀번호를 입력해야 되기 때문에
자동화하는데도 문제가 있고 매번 입력해야 되니 귀찮을 때가 많다.
이 비밀번호 입력을 하지 않도록 아래와 같이 key 파일을 재생성하여 저장하면 비밀번호 입력을 하지 않는다.
openssl rsa -in 키이름.key -out 새로운키이름.key