....

CentOS 5.3 에 Subversion + SSL + Trac 설치하기 [2] 본문

Linux

CentOS 5.3 에 Subversion + SSL + Trac 설치하기 [2]

idkook 2009. 11. 20. 19:38

너무 길어서 나누기 시작했다...

아파치와 SSL을 설치하는 부분까지 기록한다.

이제 아파치 설치....

> yum install httpd-devel openssl-devel mod_ssl mod_python mod_dav_svn
   - 차례대로 Apache2와 OpenSSL, apache의 ssl모듈, apache의 python모듈이다.

mod_python은 이후에 Trac에서 사용할 모듈이므로 그냥 같이 설치해버린다.
mod_dav_svn은 이후 아파치에서 SVN을 WEB_DAV를 통해서 처리할 수 있도록 할 것이므로 같이..

apache와 openssl을 devel패키지로 설치한 이유는 특별히 없다...
그냥도 설치해서도 될것 같은데 그냥 습관적으로... 설치한것일 뿐..
경험적으로 컴파일, 모듈연동 같은부분이 필요한 패키지는 devel을 요구하는 경우가 많았기 때문에...

우선 HTTPS 서비스가 가능하도록 인증서를 만든다.
아파치의 HTTPS 서비스가 원활하게 돌아가야 이후에 여기에 SVN과 Trac을 올릴 수 있으니까..

키 생성 작업은 ~/cert 에서 했다. 당연히 700으로 권한을 축소시키고...
파일이름은 localhost 를 사용했다. 물론 암거나 써도 된다.

우선 localhost.key파일을 생성한다.
> openssl genrsa -des3 -out localhost.key 1024
Generating RSA private key, 1024 bit long modulus
......++++++
........++++++
e is 65537 (0x10001)
Enter pass phrase: [암호 입력]
Verifying - Enter pass phrase: [암호 확인 입력]  <- 이 암호는 이후 인증서 요청을 생성할때 필요.

인증서 요청인 localhost.csr을 생성.
> openssl req -new -key localhost.key -out localhost.csr
Enter pass phrase for localhost.key: [위에 입력한 암호 입력]
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:KO   [한국을 뜻한다]
State or Province Name (full name) [Berkshire]:Seoul  [주를 입력하는 부분이지만 도시명으로.]
Locality Name (eg, city) [Newbury]:Gangsuhgu[도시이름이지만 구 이름으로...]
Organization Name (eg, company) [My Company Ltd]:회사이름
Organizational Unit Name (eg, section) []:Developer Team
Common Name (eg, your name or your server's hostname) []:[중요! 사용할 도메인명][각주:1]
Email Address []:[관리자이메일주소]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:[그냥엔터]
An optional company name []:[그냥엔터]

반드시 key와 csr을 백업해두길 권장한다.

만약 인증기관에 비용을 지불하고 인증을 받는다면 이렇게 나온 csr파일이나 파일의 내용을 보내주면 된다.
처리가 완료되면 아래에서 *.crt파일을 받을 수 있을 것이다.

인증서 crt 파일 만들기 (로컬에서 직접 인증서를 생성하는 경우..)
> openssl req -x509 -days 3650[각주:2] -key localhost.key -in localhost.csr > localhost.crt
Enter pass phrase for localhost.key: [키의 암호 입력]

이렇게 생성된 3개의 파일은 백업해둔다. 아파치에서 필요한 파일은 key와 crt파일 두개이다.
두개의 파일을 /etc/httpd/ssl[각주:3] 에 복사한다.
이 파일들의 권한은 Apache를 실행하는 계정에서 읽기접근만 가능하도록 설정하면 금상첨화..
> mkdir /etc/httpd/ssl
> cp -a localhost.key /etc/httpd/ssl
> cp -a localhost.crt /etc/httpd/ssl
> chmod 600 /etc/httpd/ssl/localhost.*
> echo -e '#!/bin/sh\necho [localhost.key에서 설정한 암호]'[각주:4] > /etc/httpd/ssl/ssl_pass
> chmod 700 /etc/httpd/ssl/ssl_pass
> chown apache:apache /etc/httpd/ssl/*

위에서 ssl_pass파일 생성은 vi를 이용해서 만들어도 된다.
#!/bin/sh
echo password

이 파일을 만드는 이유는 아파치가 실행할때마다 인증서의 암호를 물어보는 부분에서 입력을 실행해주는 스크립트이다. 아래 아파치 설정에서 이 파일을 가져오도록 설정할 것이다.

이제 대망의 아파치 설정 차례이다....
/etc/httpd/conf/httpd.conf 파일에서는 Include conf.d/*.conf 라는 설정이 있어서 해당 파일들을 include한다.
따라서 /etc/httpd/conf.d/ssl.conf 파일을 조금만 고치면 된다...
#SSLPassPhraseDialog  builtin   <- 암호 직접 입력방식... 주석처리.
SSLPassPhraseDialog  exec:/etc/httpd/ssl/ssl_pass

<VirtualHost _default_:443>
    ......
    SSLCertificateFile /etc/httpd/ssl/localhost.crt
    SSLCertificateKeyFile /etc/httpd/ssl/localhost.key
    ......
</VirtualHost>
참고로 <Files.....> <Directory .....> 는 지워버렸다... 
자연스럽게 <VirtualHost에 대한 설정이 ssl.conf 로 옮겨져 버렸는데..
이부분이 맘에 안들면 <VritualHost>태그 부분을 httpd.conf 의 제일 하단으로 옮겨도 무방하다.

여기까지 잘 했다면 이제 https://를 이용한 아파치의 시작 화면을 감상하자...
> service httpd start


브라우져에서 httpd://서버주소/ 를 치면 반가운 아파치 시작화면을 볼 수 있다.

만약 인증서 오류가 뜬다면 우선 무시하고 계속 탐색하기를 선택해본다.
표시가 된다면 아파치는 잘 돌아가고 있는것이다. 인증서의 문제일 뿐....

사설 인증서를 설치했다면 해당 인증서를 루트인증기관에 저장해야 오류메시지가 표시되지 않는다.

팁: 비스타나 윈도우7에서는 익스플로러를 관리자모드로 실행해야 인증서 저장 버튼이 활성화 된다..


  1. 인증서를 처음 만드는 사람이 자주 실수하는 곳이다. 이곳에 실제로 사용하는 host명을 넣어야 한다. 정식 도메인이 없이 IP로 접근할 것이라면 IP를 넣으면 된다. [본문으로]
  2. 일 단위 인증서 유효기간. 기본값은 365일 1년이다. 여기선 10년.. ^^ [본문으로]
  3. 지금 사용하는 아파치는 yum으로 설치된 아파치이므로 /etc밑에 아파치 설정이 있다. [본문으로]
  4. 앞부분에 따옴표도 같이 해서 1번키 옆에 있는 홑따옴표이다. #!/bin/sh 때문에 쌍다옴표를 쓰면 이벤트 핸들 에러가 난다. [본문으로]
Comments