아파치 httpd에 SSL 인증서 설치하기
먼저.. 준비물
- abc.pem: 인증 기관에서 받은 인증서 파일
- abc.key: 인증 기관에 줄 인증 파일 만들 때 생성한 키 파일
- global-abc.pem: 글로벌 인증서 파일
- 암호: 키 파일 만들 때 사용한 암호 문구
- mod_ssl.so: apache/modules에 들어있나 확인
1. mod_ssl 로딩 설정하기
apache/conf/httpd.conf 파일 열고 mod_ssl.so 검색.
vim에서 :/mod_ssl.so 쳐보면 됨.
mod_ssl.so 로딩하는 부분이 없으면 다음과 같은 설정 추가.
LoadModule ssl_module modules/mod_ssl.so
여기서 중간에 있는 ssl_module은 일종의 변수명 같은데... 그냥 이대로 쓰지 뭐.
2. httpd.conf하고 apache/conf/extra/httd-ssl.conf 연결하기
httpd.conf에서 ssl_module이라고 검색하면 방금 위에서 설정한 LoadModule말고 <IfModule> 이라는 부분이 있다.. 없으면 추가.
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
Include conf/extra/httpd-ssl.conf
</IfModule>
그 부분에 저렇게 httpd-ssl.conf 설정을 추가하도록 설정. 아마도 httpd.conf 설정이 너무 복잡해 질까봐 이러식으로 분리하는것 같은데... 이게 더 복잡한거 같에. @_@;;; 어쩌겠어.. 이렇게 하라는데.. 흠냐..
3. httpd-ssl.conf 설정
위에부터 쭉 보면 Listen 443이라고 SSL 적용할 포트 설정이 있고 기타 여러가지 설정이 있는데 이 중에서 다음 설정을 현재 디렉토리 기준으로 잘 맞춰준다.
SSLPassPhraseDialog exec:/apache/conf/ssl/ssl.pass
/apache/conf/ssl/ssl.pass라는 파일은 없다. 이 작업 끝나면 만들꺼임. 파일 경로를 꼭 저렇게 할 필요도 없고.. 단지 실행 가능한 파일이어야 한다. 즉 x 권한이 있어야 한다. 이렇게 설정하지 않으면 기본값이 builtin인데 그렇게 해두면 httpd 띄울때마다 직접 인증서 키 파일 만들 때 사용한 암호를 입력해줘야해서 매우 번거롭다.
ServerName 도메인
인증서 발급받을 때 사용한 도메인을 입력해준다. 이 설정부터는 <VirtualHost> 안에 들어간다.
SSLProtocol -all ====
SSLCipherSuite ====
이건 인증서를 발금해준 인증 기관의 매뉴얼대로 설정해야 할 것 같다. 내가 받은 인증 파일 설명서엔 저렇게 되있던데... 흠.. 중요해 보이는 정보는 ====로 자막처리 했으니 상관없겠지.
SSLCertificateFile "abc.pem 파일 경로"
여기에 abc.pem 파일 경로를 풀로 적어준다.
SSLCertificateKeyFile "abc.key"
여기에 abc.key 파일 경로를 풀로 적어준다.
SSLCACertificateFile "global-abc.pem"
여기에 global-abc.pem 파일 경로를 풀로 적어준다.
나머지 설정은 그냥 기본값 그대로 둔다. 설마.. SSLEngine on이라는 설정이 off로 되어있진 않겠지..
4. 암호 파일 만들기
위에서 SSLPassPhraseDialog 설정을 추가했었는데 거기서 지정한 파일을 다음과 같이 만든다.
#!/bin/sh
echo 암호
즉 이 파일을 실행하면 암호가 입력되도록 하는 것이다. 서버 실행할 때 마다 귀찮지 않게...
아. 그리고 이 파일 만든 다음에 꼭 실행 권한을 주도록 하자.. chmod 755 ./ssl.pass 같은 식으로.. 그래야 httpd가 이 파일을 실행해서 암호를 입력 받을 수 있지... 그렇지 않으면 httpd가 아에 안뜬다.
5. 서버 띄우고 확인
이제 apache/bin으로 가서 ./apachectl start 등으로 아파치를 실행하고 netstat -na | grep 443으로 443번 포트가 동작하는지 확인하고 웹 브라우저에서 https://도메인 입력해서 확인한다. 끝.