Ubuntu 에서 apache2에 SSL 설정

모든 작업은 su - 로.

작업 과정
 - OepnSSL 설치
 - SSL mod enable
 - openssl 로 private key 생성하기
 - csr 생성
 - crt 생성
 - private key, csr(crt) 파일 백업
 - apache에 ssl 설정
 - apache start

1. OepnSSL 설치
OpenSSL 은 SSL 을 구현한 인증 암호화에 대한 변환 등의 기능을 제공하는 툴이다.
최신 Ubuntu에는 설치되어서 나옴.

2. SSL mod enable
apache2 가 설치되어 있는 곳에서 mods-avaliable 을 살펴보면 ssl 이 있다는 것을 알수 있다. (ssl.conf, ssl.laod 파일이 있다)
root@seoeun-ubuntu:/etc/apache2# cd mods-available/
root@seoeun-ubuntu:/etc/apache2/mods-available# ls -l

그럼, ssl module 를 enable 시킨다.
root@seoeun-ubuntu:/etc/apache2# a2enmod ssl

3. openssl 로 private key 생성하기
root@seoeun-ubuntu:/etc/apache2# openssl genrsa -des3 -out sphere.key 1024

 - private key 확인
root@seoeun-ubuntu:/etc/apache2# openssl rsa -noout -text -in sphere.key


private key 내용


4. csr 생성
인증서 발급을 위해서는 위에서 생성한 private key 로 csr 을 생성해야 한다.
root@seoeun-ubuntu:/etc/apache2# openssl req -new -key sphere.key -out sphere.csr

csr 생성 메시지


  - csr 파일 확인
root@seoeun-ubuntu:/etc/apache2# openssl req -noout -text -in sphere.csr

5. crt 생성
csr 을 인증기관에 보내면 crt(certificated file) 파일을 보내준다.
내부 테스트요은 인증기관의 인증까지는 필요 없기 때문에 self-signed crt를 생성해서 사용하면 된다.

- Self-Signed crt 파일 생성
root@seoeun-ubuntu:/etc/apache2# openssl req -new -x509 -days 365 -key sphere.key -out sphere.crt

6. private key, csr(crt) 파일 백업
만들어진 private key 와 csr, crt 파일을 적당한 곳에 백업한다. /usr/share/doc/apache2.2-common/README.Debian.gz 에 보면 self-signed 한 key 는 /etc/ssl/private 아래 두라고 권고하고 있다.
이 private key 와 crt 파일은 apache ssl 설정에서도 참조한다.
$ mv /etc/ssl/private/ sphere*
$ sudo chmod 644 /etc/ssl/private/sphere.key

7. apache에 ssl 설정
- mods-enabled 설정
위에서 a2enmod ssl 을 했기 때문에 mods-enabled/ssl.conf 에 대한 symbolic link 가 mods-available/ssl.conf 가 생성되었다. 
/etc/apache2/mods-enabled/apachssl.conf -> ../mods-available/ssl.conf


- sites-enabled 설정
mods-enabled 와 마찬가지로 sites-enabled/ssl 에 sites-avaliable/ssl 로 symbolic link 를 건다. 이를 위해서 ssl  설정파일을 만들어야 하는데, sites-available/default-ssl 을 copy 하여 살짝 고쳐서 사용하도록 했다. (default-ssl 에 바로 수정해도 된다)

seoeun@seoeun-vaio:/etc/apache2/sites-available$sudo cp default-ssl ssl
seoeun@seoeun-vaio:/etc/apache2/sites-available$sudo vi ssl

<IfModule mod_ssl.c>

<VirtualHost *:443>
......
SSLEngine on
SSLCertificateFile    /etc/ssl/private/sphere.crt
SSLCertificateKeyFile /etc/ssl/private/sphere.key
.......
# Tomcat 과 연결한다면.
        JkMount /* ajp13_worker
</VirtualHost>
</IfModule>

$ a2ensite ssl
/etc/apache2/sites-enabled/ssl  -> ../sites-available/ssl


8. apache start
모든 것이 적용되었다면 apache를 start 시킨다. (sslstart 없어지고 그냥 start로 됨)

$ sudo apahec2ctl start
or
$ sudo /etc/init.d/apache2 restart

가끔 apache restart 가 안될 때, apache 를 모두 kill 하고, 그래도 다음과 같이 80을 누가 LISTEN 하고 있다고 하면,
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down

$ sudo fuser -k -n tcp 80

으로 죽여버리자.


apache start 메시지


만약 start 했는데, 다음과 같은 메시지가 뜬다면,
/etc/apache2/apache2.conf 에서 마지막 줄에 ServerName localhost 추가하면 된다.

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

 - 테스트
그럼, 이제 https://localhost:443 해보자.
FireFox 에서는 "본 연결은 신뢰할 수 없음" 하면서 상세 기술 정보를 보면 자기 스스로 서명하였으므로 인증서를 신뢰할 수 없다고 한다.
Chrome 에서도 "이 사이트의 보안 인증서는 신뢰할 수 없습니다" 하고 나온다.
Third Party 가서 인증 받아오라는 거겠지요.

아무튼 연결 성공, 아니면,,ㅠ.ㅠ

apache tomcat 연결 보기 





신고

'개발 > MISC' 카테고리의 다른 글

RailLink 무선랜카드 오류  (0) 2011.02.09
오픈 소스 소프트웨어 라이센스 가이드  (0) 2011.01.25
Thrift  (1) 2011.01.04
Self signed certificate Browser 에 적용하기  (0) 2010.03.25
Ubuntu 에서 apache2에 SSL 설정  (5) 2010.03.18
Ubuntu 에서 Apache와 Tomcat 연결하기  (0) 2009.02.27
TRACKBACK 1 Comment 5

티스토리 툴바