'SSL'에 해당되는 글 2

  1. 2010.03.25 Self signed certificate Browser 에 적용하기
  2. 2010.03.18 Ubuntu 에서 apache2에 SSL 설정 (5)

Self signed certificate Browser 에 적용하기

Server 에 self signed certificate 를 적용한 사이트에 
Client 가 SSL 로 접속을 하면 "본 연결은 신뢰할 수 없음" 이라고 알려준다. 
예전에는 browser 에서 dialog 를 띄우주면서 인증서를 설치 할 수 있었지만, 요새는 그런거 없다.
그럼 client 에 server에서 적용한 self signed certificate 를 강제로 설치하면 이제 뭐라고 안하고 보여주겠지.

- FireFox (3.5.8)

편집 > 환경설정 > 고급 > 암호화> 인증서 보기 를 선택하면 Dialog 가 뜨면서 인증서 리스트가 보인다.
창 아래에 보면 "가져오기" 버튼이 있는 데 그걸 눌러서 Server 에 설치한 인증서를 설치한다. (Server 에 설치한 xxx.crt 파일)
그럼 이제 https://xxx.com 에 접속하면 된다.

- Chrome (5.0.307.11 beta)
Chrome 은 FireFox 같은 UI 를 제공하지 않는다.
Ubuntu 기준이다. Window 용 chrome 은 UI 를 제공하는 구나. 
여기 에 보면 chrominum project 에서 이에 관한 issue 를 설명해 주고 있다. 
가장 간단한 방법은 IE 에서 UI 를 통해서 인증서를 수동 설치하고, 그걸 chrome 에서 가져다 사용하면 되는데,
IE 가 없다면? 그럼 chrome 에서  제공하는 command line tool 을 사용하면 된다.

Ubuntu(9.10) 기준으로, 일단 tool 받기.

$ sudo apt-get install libnss3-tools

cert 를 insert 하기
FireFox 를 사용해서 FireFox 에 설치된 Server 측 인증서를 가져오기로 backup 하여 사용하자. FireFox 에서 인증서 가져오기를 통해서 접속할 Server 의 인증서를 xxx.com.pem 으로 저장한다.

$ certutil -d sql:/$home/.pki/nssdb -A -t TC -n xxx.com -i xxx.com.pem
$ certutil -d sql:/$home/.pki/nssdb -L

리스트를 확인해서 설치한 인증서가 있다면 다음 flag 를 통해서 chrome 을 한 번 실행시켜줘야 한다.

$ google-chrome --auto-ssl-client-auth https://xxx.com

만약 chrominum-browser 를 사용한다면, google-chrome 대신 chrominum-browser 라고 하면 된다.

성공하면 매번 위와같이 command 로 실행 안하고 바로 chrome 실행해서 접속하면 된다.
cert list 에서 지우고 싶다면,

$ certutil -d sql:/$home/.pki/nssdb -D -n xxx.com

서버에 Self signed certificate 적용하는 게 궁금하다면, 여기




신고

'개발 > 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 0 COMMENT 0

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