우리가 일반적으로 알고 있는 http 프로토콜은 포트 번호가 default 로 80 이다. http를 통해 인터넷 web page를 이용할 경우 사용자가 입력한 값들이 string 의 형태로 바로 network을 통해 나가기 때문에 hacker들이 패킷을 중간에 가로챌 경우 보안 정보의 유출이 될수 있다.
예를 들면 웹 사이트에서 ID와 PASS를 입력 할때 이 내용들이 string 으로 바로 network 로 송신 되는 것이다. 따라서 이러한 정보의 경우 암호화를 할 필요 성이 있다. 이 때문에 나온것이 SSL(Secure Sockets Layer) 이다. 이거외에 TLS 도 있는데, 이건 잘 모르겠다.ㅡㅡ;ㅋ
대표적인 web server 인 Apache에서는 이러한 SSL 를 지원한다. SSL를 통한 web의 접근은 https:// 라는 프로토콜을 이용하면 된다. 이때 접속 되는 포트는 443 이다.
그럼 Apache에서 SSL 키값을 활용한 SSL 적용 방법을 알아 보자.
Download link(oepn SSL를 지원하는 apache down load link)
http://apache.tt.co.kr/httpd/binaries/win32/apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi
일반적으로 ssl 인증 key 활용에는 돈이 들기 때문에 apache 에서 제공하는 open ssl 를 적용하도록 한다.
= Apache Installation
- 설치는 기존 Apache 설치와 동일.하다 먼저 다운받은 프로그램을 실행시켜 아파치를 설치한다.
- Apache2.2/bin 폴더의 ssleay32.dll, libeay32.dll 파일을 시스템디렉토리(Windows 2000의 경우 C:WINNT, Windows XP, 2003등은 C:Windows)아래 system32 디렉터리로 복사한다.
Copy ssleay32.dll C:WINDOWSsystem32
Copy libeay32.dll C:WINDOWSsystem32
= Openssl.cnf
Apache2.2/conf 폴더의 openssl.cnf 파일을 Apache2.2/bin폴더로 copy한다
= CSR생성 (privekey.pem, www.hello.csr 파일 생성)
- Apache2.2/bin 위치에서 openssl 을 실행한다.
- OpenSSL> req –config openssl.cnf –new –out www.hello.csr 을 입력한다.
- 정상적으로 진행되면 Generating a 1024 bit RSA private key Writing new private key to ‘privkey.pem’ 라는 메시지가 나온다.
- “Common Name” 부분에는 config에 등록된 server name 을 넣자.
- 젤밑에 extra 머시기는 걍 엔터 엔터..

= privekey.pem 파일에서 pass phrase 제거
- 이 과정은 private key에서 pass phrase를 제거하는 과정.
- Key 값은 아파치 서버와 관리자만 읽을 수 있어야 한다.
OpenSSL> rsa –in privkey.pem –out www.hello.key 을 입력한다.
= Self Sign
- CA로부터 실제 인증서를 받기 전까지 사용할 수 잇는 self-signed 인증서 생성하는 과정.
- 이 인증서는 1년 후에 expire된다. –days 옵션을 통해 날짜를 증가시킬 수 있다.
OpenSSL> x509
인제 apache config 에서 key 값을 활용한 ssl 처리를 하면 된다.
나 같은 경우 httpd.conf 에서 바로 ssl을 설정 하지 않고 extra folder에 있는 httpd-ssl.conf 를 활용하였다.
따라서 httpd.conf 에서 LoadModule ssl_module modules/mod_ssl.so 이부분의 비활성화(#)을 풀어 주고 Include conf/extra/httpd-ssl.conf 이놈을 include 해준다.
이놈들은 apache 깔면 다 작성되어 있으니까 걍 #만 제거 해주면 된다.
그리고 물론 httpd-ssl.conf 도 기본적인 부분은 다 작성되어 있다.
걍 고대로 쓰고 server setting 만 httpd에서 해 줬던 것 처럼 해주면 된다.
참 server name 은 아까 common name 으로 하고..(common name 으로 안하면 어찌 되는지는 모름... ㅋ 테스트 안해 봐서리) server admin 은 mail 주소를 쓰자.
이제 apache를 내렸다 올리면 끝이다.
확인은 https://www.hello.com 으로 들어가보면 된다.
ps. Esclipse 에는 port로 통신하는 경우 그 정보를 모니터링 할수 있다.(단, eclips 에서 web을 열고 테스트해야 한다.) 즉 패킷 데이터를 확인 할수 있는 것이다. ssl이 적용 되어 있다면 이 패킷 정보가 이상한 글자로 튀어 나올것이고 일반 http로 적용 되어 있다면 그냥 일반 문자로 튀어 나올 것이다.
모니터링 하는 정보는 Window->Show View->Other에서 TCP/IP Monitor로 검색하면 된다. 설정하는 부분은 생략한다.
출처 : http://interwater.tistory.com/entry/SSL-%EC%9D%98-%EC%A0%81%EC%9A%A9-Apache-22