본문 바로가기

linux

SSL apache 설치하기 - 출처 : 한국정보인증 다운로드 문서


1. 인증서 신청
1.1. 개인키 생성
개인키와 CSR 생성을 위하여 웹서버에 “OpenSSL”이 설치되어 있어야 합니다.
사용하시는 Windows용 Apache가 SSL을 지원하는 버전인지 확인하여 주십시요.
OpenSSL은 기본적으로 “ C:\Program Files\Apache Software Foundation
\Apache2.2\bin ” 에 설치되며, 만약 경로가 환경변수에 설정되어 있지 않다면,
“openssl”명령을 절대경로와 함께 입력하셔야 합니다.
(예 : {Apache Home Directory}\bin\openssl )
1.1.1. Random State 생성
개인키 생성시 사용할 초기 입력값으로 Random값(rand.dat)을 생성합니다.
openssl sha1 * > rand.dat
또는
cat filename1 filename2 filename3 > rand.dat
또는
-생략-
생성된 Random값(rand.dat)은 개인키 생성과정을 완료한 후 삭제하여 주십시오.
1.1.2. 개인키 생성
비밀번호로 보호되는 개인키를 생성합니다.
rand.dat는 난수 생성을 위해 사용되며, RSA 알고리즘에서 이를 이용하여 개인키를
생성하고 이를 Tripple DES로 암호화하여 개인키(key.pem)에 저장합니다.
만약 rand.dat 생성을 생략한 경우, 아래 “-rand rand.dat”부분을 생략하여주십시오.
openssl genrsa -rand rand.dat -des3 2048 > key.pem
※ 주의 : 개인키 생성시 입력하신 비밀번호(Passphrase)는 웹서버 기동시 반드시
필요하므로 꼭 기억하시기 바랍니다. 분실로 인한 복구는 불가능 하며 인증서를 재
발급 받으셔야 합니다. 인증서 재발급 절차는 인증서 발급절차와 동일합니다.
1.1.3. 개인키 백업
생성한 개인키의 백업복사본은 별도의 저장매체에 보관하여 주시기 바랍니다.
만일, 개인키를 분실하신 경우 백업된 개인키를 사용하셔야 합니다.
1.2. CSR(Certificate Signing Request) 생성
CSR은 'Certificate Signing Request'(인증서 서명 요청)이란 뜻으로, 인증서 발급을
위해 필요한 정보를 담고 있는 인증서 신청형식 데이터 입니다.
CSR에 포함되는 내용으로는, 개인키 생성 단계에서 만들어진 개인키(Private Key)
와 공개키(Public Key)의 키쌍 중에서 공개키가 포함되며, 인증서가 적용되는 도메
인에 대한 정보 등이 포함됩니다.
즉 CSR이란, “나는 이러이러한 사람인데(인증서 적용 도메인 정보), 이 키(공개키)
가 포함된 인증서를 만들고 싶습니다.” 라는 내용이 포함되어 있습니다.
그러므로 올바른 CSR을 생성하기 위해서는 해당 웹서버의 도메인 정보를 정확히
넣어주셔야 하며, 인증서를 적용할 도메인(ex: test.sgssl.net)의 Whois 정보와 일치
하도록 해야 합니다.
※ Whois검색 시 “sgssl.net” 로 검색, test 혹은 www와 같은 host name은 제외.
ex> www.kisa.or.kr 도메인에 대한 Whois 등록정보 검색화면
- Country : KR
- State / Province : Seoul
- Locality : Songpa-gu
- Organization : KISA
- Organization Unit : Server Admin
- Common Name : www.kisa.or.kr
또한 개인키 및 CSR의 생성을 여러 번 수행하셨을 경우, 사용하실 개인키와 일치
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
8/25
하는 CSR을 저희에게 알려주셔야 합니다.
(만약 알려주신 CSR의 내용이 사용하실 개인키가 아닌 다른 개인키를 이용해 생성
되었을 경우, 발급된 인증서가 개인키와 일치하지 않아 키쌍이 맞지 않는 오류가 발
생합니다. 이 문제를 해결하기 위해 인증서를 재발급해야 하는 번거로운 과정을 거쳐
야 합니다.)
CSR은 Base64형식으로 작성되므로, 파일을 메모장과 같은 편집기로 열어보면 아
래와 같이 ASCII 문자로 이루어진 텍스트를 보실 수 있습니다.
1.2.1. CSR 생성
저희에게 보내주실 CSR을 생성합니다.
요청주신 CSR의 정보로 웹서버 인증서가 발급되며, CSR을 생성한 개인키로만 발
급된 웹서버 인증서를 사용하실 수 있습니다.
※ 참고 : CSR 생성은opensssl 설정파일(openssl.cnf)에 정의된 policy를 따르므로 필요 시
설정파일을 수정하신 후 인증요청서를 생성하여 주시기 바랍니다.
openssl req -config ../conf/openssl.cnf -new -key key.pem -out csr.pem
※ 위 명령어 실행 시 Apache 2.2.9(Win32용) 이외의 버전에서는 “openssl.cnf”을 찾지못하
여 에러가 발생할 수 있습니다.
이 문제의 해결을 위해서는 Apache 웹서버를 2.2.9 버전으로 교체하거나, 서버에
“c:\usr\local\ssl\” 경로를 임의 생성하여 “openssl.cnf”를 복사하하여 주시면 해결되겠
습니다. (“openssl.cnf”는 “[Apache 홈디렉토리 경로]\conf\” 아래에 위치하고 있습니다.)
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
9/25
앞서 생성한 개인키와 해당 도메인에 대한 Whois 정보를 이용하여, 아래와 같이
CSR을 생성합니다.
# ENGLISH
Domain Name : kisa.or.kr
Registrant : KISA
Registrant Address : , Garakbon-dong , Songpa-gu, Garakbon-dong, Songpa-gu Seoul, KR
Registrant Zip Code : 138803
. . . . . . . . .
<도메인 “www.kisa.or.kr”에 Whois 정보>
1> Enter pass phrase for key.pem:
- 앞서 생성한 개인키의 암호문을 입력합니다.
2> Country Name (2 letter code) [AU]:
- 국가 (C : country) 에 해당하는 값을 입력합니다.
(예) KR
3> State or Province Name (full name) [Some-State]:
- 지방 (ST : state) 에 해당하는 값을 입력합니다
(예) Seoul
4> Locality Name (eg, city) []:
- 지역 (L : locality) 에 해당하는 값 (city, town 등) 을 입력합니다.
(예) Songpa-gu
5> Organization Name (eg, company) [Internet Widgits Pty Ltd]:
- DN (Distinguish Name) 에 포함될 기관명 (O : organization)을 입력합니
다.(whois의 Registrant항목)
(예) KISA
6> Organizational Unit Name (eg, section) []:
- DN에 포함될 부서이름 (OU : organization unit)을 입력합니다.
(예) Licensed CA
7> Common Name (eg, YOUR name) []:
- SSL인증서를 사용할 웹 서버의 Full domain name(host + domain)을 입력합니다.
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
10/25
(예) www.kisa.or.kr
8> 남은 부분의 입력은 생략하셔도 됩니다.
9> 위 과정을 거치면 다음과 같이 csr.pem 파일에 웹 서버 인증요청 정보가 기록
되게 됩니다.
-----BEGIN CERTIFICATE REQUEST-----
MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEh
MB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB
AQUAA4GNADCBiQKBgQDVkOcDdKCt+Ep0Wl75Pyf0MZjIzCy6+xE6Hrvm6ehvGTEv
xKGJPJtKA1Dpb3Ae2lwJBJaqTwBepwqTt8pw3H43qMMBsMmsXxH66ouFnKlf11WD
wQSWDCQmK6Ev1AwryfsCvVrzMDxnDMr74G9O56vDKMOwqTOjHQO1K2MoioJqYwID
AQABoAAwDQYJKoZIhvcNAQEFBQADgYEAiV+Lpg6mpsJ3qHuJeHAqB+6tGV/YOB4h
xyda34FjrCN/sHpMsSxfR6M4ongwx4gb85FC/7/zTChNM/PMfBeP6O8Fkl885vzE
T1yfweacBxj52prA+lSIo98VwhLdzh6UXFSoEAnJ12urvjrGdBbQKBuDUd+1ewwD
oOmR0eSseZo=
-----END CERTIFICATE REQUEST-----
10> 지금까지 생성한 CSR내용을 http://www.sgssl.net 의 인증서 신청 메뉴를 통
하여 접수 하여 주시기 바랍니다.
- 생성된 CSR 파일을 메모장과 같은 편집기를 이용하여 열고, 내용 모두를 복사
하여, 인증서 신청 메뉴를 통하여 접수하여 주시기 바랍니다.
(-----BEGIN~ 및 -----END~ 모두 포함)
※참고: 인증서 신청 메뉴 위치 - [ Home > 제품소개 > 구매신청 > 정보입력 ]
※ 개인키 파일과 CSR 파일의 파일명 및 저장위치
앞에서 생성한 개인키 및 CSR 파일의 파일명과 저장위치에 대한 규칙은 정해진
것이 없습니다. 또한 이어서 설명하는 인증서에 대한 파일명과 저장위치 역시
일정한 규칙은 없습니다.
따라서, 개인키 및 CSR의 파일명을 본 매뉴얼에서 사용하는 것처럼 “key.pem”
과 “csr.pem”로 하지 않으셔도 되며, 효율적인 관리를 위해 아래와 같이 파일명
과 저장경로를 자유롭게 지정하시면 되겠습니다.
/usr/local/apache/certificate/www_sgssl_net_key_090622.pem
/usr/local/apache/certificate/www_sgssl_net_csr_090622.pem
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
11/25
2. Apache 환경설정
※본 Apache 웹 서버 환경설정의 내용은 “ apache_2.2.9-win32-x86-openssl-0.9.8hr2.
msi” 설치버전을 기준으로 작성하였으며, 이후 Apache 버전 경우 해당 내용을 각 버전에
맞게 반영해 주십시오.
Apache 웹 서버 설치에 관한 자세한 문의는 웹 서버 관리자에게 문의 주시기 바랍니다.
2.1. httpd 모듈 리스트 확인
1> 모듈의 동적 로딩을 위한 mod_so.c 확인
(아파치 홈 디렉토리)\bin\httpd –l
2> 인증서 적용을 위한 Apache SSL모듈 mod_ssl.so 확인
(아파치 홈 디렉토리)\modules\dir
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
12/25
3> httpd.conf 설정 변경
a. “LoadModule ssl_module modules/mod_ssl.so“ 주석해제
b. “Include conf/extra/httpd_ssl.conf” 주석해제
c. “<IfModule ssl_module> ~ </IfModule>” 주석해제 확인
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
13/25
3. 인증서 설치
한국정보인증에서 CSR을 접수 하면 그 정보를 가지고 인증서를 발급해 드립니다.
저희가 보내드리는 인증서 발급 메일에는 다음과 같은 파일이 포함되어 있습니다.
- RootCA_ChainCAs_(인증서제품명).zip
- (domain_name)_cert.pem
- (domain_ name)_ csr.pem
- Seal_sample.zip
이 중에서 “RootCA_ChainCA_(인증서제품명).zip”에 포함되어있는, AddTrustExternal
CARoot.crt는 최상위인증기관 인증서(루트인증서)이며, UTNAddTrustServerCA.crt와
SGTrustCA.crt는 발급기관 인증서(중개인증서)입니다.
그리고, (domain_name) _cert.pem은 SSL인증서이며, 기타 (domain_name)_csr.pem
은 인증서 신청 시 생성하신 CSR, Seal_sample.zip은 SSL이 적용되었다는 것을 증
명해주는 seal마크 관련 소스입니다. 이 seal은 메인 페이지의 적당한 곳에 넣어 주
시면 되겠습니다.
3.1. SSL인증서 업로드
저희로부터 전달 받으신 PEM 형식의 인증서를 웹 서버에 파일로 저장합니다..
(인증서를 “ C:\Program Files\Apache Software Foundation\Apache2.2
\certificate” 에 저장한 경우)
인증서 파일 : (domain name)_cert.pem
중개인증서 파일 : SGTrustCA.crt
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
14/25
3.2. httpd-ssl.conf 수정 – SSL포트 설정
- “ C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra ”
경로에 있는 httpd-ssl.conf파일을 수정
- SSL에서 사용할 포트(default 443)가 설정되어있는지 확인
“Listen (SSL적용 포트번호)”
3.3. httpd-ssl.conf 수정 – virtual host 설정
httpd-ssl.conf의 https(SSL) 를 사용하기 위해 구성된 virtual host 부분에서
“DocumentRoot” 항목은 http 설정 부분과 동일하게 설정하여 주시고, 그 외
“ServerAdmin” 및 “ErrorLog”, “Transferlog” 항목은 적절하게 설정하여 주십시오.
<VirtualHost (인증서 적용 도메인):(SSL적용포트)>
# General setup for the virtual host
DocumentRoot "/usr/local/apache/htdocs"
ServerName (인증서 적용 도메인):(SSL적용포트)
ServerAdmin root@(domain)
ErrorLog /usr/local/apache/logs/ssl_error_log
TransferLog /usr/local/apache/logs/ssl_access_log
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
15/25
VitualHost 시작 부분과 “ServerName”항목은 위 설명을 참조하여 아래 그림과 같이
설정하여 주십시오. [ (인증서 적용 도메인):(SSL 적용포트) ]
※ 한가지 유의할 점은, 위의 그림에서 첫번째 줄의 <VirtualHost eobiya.signgate.
com:443>이 유효하기 위해서는, 웹서버가 위치한 서버의 hosts파일 내용 안에
“eobiya.signgate.com” 도메인에 대한 ip매핑 설정이 되어 있어야 합니다.
ex> 리눅스의 경우 hosts파일은 “/etc/hosts” 의 경로에 존재하며, 만약
“jclee.signgate.com” 에 대한 ip주소가 “123.123.123.123”이라면 추가할 내용은 다음
과 같습니다.
123.123.123.123 eobiya.signgate.com
※ 참고: 웹서버에 SSL인증서 설치 도메인이 하나일 경우에는 https://의 default 포
트인 443을 이용하면 되지만, 만약 여러 개 도메인에 SSL인증서를 설치할 경우는 한
개의 도메인에 대해 443을 부여하고 나머지 도메인에 대해서는 각자 다른 포트번호
를 부여하여야 SSL이 정상 작동합니다. ex> 444, 446, 447, 8444, 8445 등등
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
16/25
3.4. httpd-ssl.conf 수정 – 개인키, 인증서, 중개인증서 설정
ssl.conf에서 해당 도메인의 VirtualHost설정 안에 인증서, 개인키, 중개인증서에 관
한 연결설정을 합니다. 인증서, 개인키, 중개인증서의 경로 및 파일명에 관한 설정
은 다음과 같습니다.
인증서설정: SSLCertificateFile /(인증서 저장 경로)/(domain name)_cert.pem
개인키설정: SSLCertificateKeyFile /(개인키 저장 경로)/key.pem
중개인증서설정: SSLCertificateChainFile /(중개인증서 저장 경로)/SGTrustCA.crt
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
17/25
3.5. httpd-ssl.conf 수정 – SSL인증서 개인키 암호설정
Win32용 Apache의 경우, 서버의 시작과정에서 인증서 비밀키의 암호문을 질의할
수 있는 터미널이 존재하지 않습니다.
따라서 인증서 비밀키에 대한 암호문을 자동으로 입력하는 설정이 필요합니다.
1> 인증서 비밀키 암호저장 파일 만들기
- 아래와 같은 내용의 간단한 배치파일(.bat)을 작성합니다
@echo (암호문)
(예)파일명: ssl_pass.bat / 파일내용: @echo 12345678
2> 웹 서버 인증서 비밀키 자동입력 설정
- 아래와 같은 설정문을 아래 그림과 같이 httpd-ssl.conf에 추가합니다.
SSLPassPhraseDialog "exec:(절대경로)/ssl_pass.bat"
(이때, 기존의 “SSLPassPhraseDialog builtin”설정문은 주석처리)
※주의: 인증서 비밀키에 대한 암호문은 절대 노출되어서는 안되며, 노출 시에는 보
안상 심각한 문제가 발생할 수 있습니다. 따라서, 비인가자의 암호문파일에 대한 접
근을 차단하고 특별한 주의와 관리가 요구됩니다.
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
18/25
3.6. 웹서버 재기동
- httpd.conf 파일에 오류가 없는지 확인
/(아파치홈 절대경로)/bin/httpd –t
Syntax OK 라고 나오면 오류가 없습니다.
- 기존 아파치 서비스 중단
/(아파치홈 절대경로)/bin/httpd -k stop
- http,https 웹 서버를 기동
(아파치홈 절대경로)/bin/httpd -k start
실행되면 http(80)과 https(SSL적용 포트번호, default 443) 두 서비스가 실행
Httpd 데몬이 실행중인지를 확인하는 명령어는 다음과 같습니다.
netstat –na | findstr 80
netstat –na | findstr 443
※참고: Win32용 아파치의 경우, 시스템 트레이에 있는 “Apache Servers Monitor”의 아이콘
이나 시작메뉴의 “Monitor Apache Servers”를 이용하여 웹서버의 정지 및 시작을 간단하게
수행할 수 있습니다.
SG-SSL-TSD-MAN-0109 Rev. V4.0
SG SSL Certificate Installation Guide – Apache 2.2.9
Win32
19/25
3.7. SSL인증서 설치 확인
SSL인증서 설치를 확인하는 방법은, https://(domain) 으로 접속하셨을 경우 브라
우저에 자물쇠 표시가 나타나면 정상적으로 설치된 것입니다.
자물쇠를 더블클릭하시면 설치된 인증서를 확인하실 수 있습니다.
위 방법 외에도 웹브라우져의 대메뉴에서 [ “파일” à “속성” à “등록 정보” 창 및
“인증서” 버튼 ]을 통해 인증서 적용 여부를 확인할 수 있습니다.
이 방법은 인증서설치를 정상적으로 완료하고도 https:// 접근시 웹브라우져에서 자
물쇠 표시가 나타나지 않을 경우, 인증서 확인을 위해 사용할 수 있는 유용한 방법
입니다.

'linux' 카테고리의 다른 글

리눅스 시스템 정보보기  (0) 2012.05.11
리눅스 포트 확인  (0) 2012.03.12
리눅스 서버 끄기  (1) 2010.06.08
실시간 로그 보기  (0) 2010.02.12
개발 서버 리스타트  (0) 2009.12.16