아파치를 설치할 때 시작옵션에 지정해 주지 않으면
ssl과 관련된 내용은 나중에 지정해 줘야 한다.

ssl이 설치 되었는지의 여부는
httpd –l
위의 명령어를 써서 mod_ssl.c이 나오면 설치된 것이다.,

/usr/local/apache2/modules아래에
mod_ssl.so라는 모듈이 존재하는지를 살펴본다.
있으면 ssl모듈이 SharedObject형태로 설치된 것이다.

이것이 없을 경우.
먼저 openssl을 설치해야한다.
/usr/local에서

wget –c http://www.openssl.org/source/openssl-0.9.8i.tar.gz
tar
xvfz openssl-0.9.8i.tar.gz
cd openssl-0.9.8i
./configure shared
make
make install
이렇게하면 /usr/local/ssl에 디폴트로 설치된다.

그리고 lib path에 등록해야한다
# vi /etc/ld.so.conf 수정
/usr/local/ssl/lib
추가

# ldconfig


그리고나서 아파치를 컴파일하자.
설치된 아파치의 소스로 가서(예를들면 이런곳: /usr/local/httpd-2.2.17)

./configure --prefix=/usr/local/apache2 --enable-module=so --enable-so  --enable-mods-shared=ssl --with-ssl=/usr/local/ssl --enable-ssl=shared

위의 명령어를 치고 Enter

이때 중요한 것은 module=so로 잘 쳤는지 확인해 보는 것이다.
modules=so라고 치면 에러가 나니 주의!

그리고
#make

#maike install
을 해주면 된다.

컴파일을 할때 이미 돌아가고 있는 서비스라면 prefix를 다른 폴더로 바꿔준다.
prefix=/usr/local/apache222 => 이런식으로.
이렇게 하면 컴파일 된 후에 
prefix=/usr/local/apache2 /modules라는 폴더가 생기는데
이 안에 mod_ssl.so 모듈이 자리잡고 있다.
그럼 mod_ssl.so를 기존의 아파치/modules로 복사해 준다.

<이후 conf에서 설정해 줄 것들>
1. 아파치/cont/httpd.conf

LoadModule ssl_module modules/mod_ssl.so
NameVirtualHost ip주소:80

2. 아파치/cont/extra/httpd-ssl.conf
NameVirtualHost ip주소:443

<VirtualHost IP주소:443>
     ....
    ServerName www.도메인.co.kr:443
   SSLEngine on
    SSLCertificateFile conf/ssl/www.domain.com.crt
ß 인증서 파일 경로
    SSLCertificateKeyFile conf/ssl/www.domain.com.key ß 키파일 경로
    SSLCACertificateFile conf/ssl/chainca.crt ß 중계인증서 파일경로 
</VirtualHost>
 
# SSL 을 통해서만 접근할 수 있는 디렉토리 설정.
<Directory "/some/html/dir/secure">
     SSLRequireSSL
     ....
</Directory >


기존 아파치/bin에서
#apachectl stop
# apachectl start로 해주면 된다.

시작시 비밀번호 입력안하고 자동으로 시작하도록 설정하는것은
/usr/local/apache2/conf/ssl/pw.sh를 만들어준다.
내용은 아래와 같이.
#!/bin/sh
echo "mp8557"
그리고
chmod 700 /usr/local/apache2/conf/ssl/pw.sh

/usr/local/apache2/conf/httpd.conf에 아래의 내용을 추가해준다
<IfModule mod_ssl.c>
#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog  exec:/usr/local/apache2/conf/ssl/pw.sh
</IfModule>

그리고 나서
/usr/local/apache2/bin/에가서
apachectl configtest 라고 하면 문법검사를 해준다

이상이 없다면
apachectl start

기존 띄우던 페이지
기존의 포트가 80이라면 그냥 http://www.기존도메인 => https://www.기존도메인으로 확인해 볼수있다.

나의경우 8080포트를 사용하고 있었기에 기존은 이렇게 연결되고 있었다.
url: http://www.도메인:8080
https는 기본 port가 443이므로 다른 보안관련 포트 설정인경우 포트를 붙여주지만
그냥은 https://www.도메인 로 띄우면 된다.

이상 확인 끝.
보안설정이 필요한 페이지를 https://로 호출하고
그페이지에서 다른페이지로 갈때 http://로 호출해주면 된다.







Posted by verynyang poppy


티스토리 툴바