Apache 웹서버(1.3.xx , 2.0.xx 공통) CSR(Certificate Signing Request) 생성
Apache 웹서버를 사용하시는 경우에는 Apache 웹서버에 SSL를 적용하는데에 몇가지 확인해 보아야 할 부분이 있습니다. openssl 암호화 라이브러리 설치 여부와 Apache 웹서버에 mod_ssl 모듈이 설치되어있어야 합니다. 다음으로 서버 개인키(비밀키)를 생성하고, 생성된 개인키를 토대로 CSR(Certificate Signing Request)을 생성합니다. 생성된 CSR 파일을 애니서트로 보내주시면, 루트기관에서 발행하는 정식인증서 발급 절차를 밟게 됩니다. 그 후에 정식 인증서가 발급되고 웹서버에 설치되면 웹서버 SSL 설정은 마쳐지게 됩니다.
※ CSR(Certificate Signing Request) 생성 순서
1. openssl 설치 확인 2. Apache 웹서버 mod_ssl 모듈 설치 확인 3. 개인키(비밀키) 생성 4. 개인키 확인 5. CSR 생성 6. CSR 확인 7. 개인키 백업 8. 애니서트에 CSR 접수 9. 네트웍 확인 사항 - SSL 적용에 따른 방화벽, L4 switch 설정 확인 10. 애니서트 CSR 파일 답신 확인
일반적으로 위의 결과에서 /usr/bin/openssl 은 rpm 설치된 것이며(redhat 8.0 이상), /usr/local/openssl/bin/openssl 은 openssl 소스 설치된 것입니다. openssl 이 rpm 설치된 것이라면, openssl-devel 라이브러리도 rpm 설치되어있는지 확인합니다.
Apache 1.3.xx 웹서버에 mod_ssl 모듈 설치 확인합니다. Apache 웹서버는 두가지 방식의 모듈 설치를 지원하므로 statically linking module, DSO(Dynamic Shared Objects) module 로 설치된 모듈을 확인할 수 있습니다. - $APACHE 변수는 아파치 설치 디렉토리를 가르킵니다.
[root@web1 root]# $APACHE/bin/httpd -l
Compiled-in modules:
...
mod_so.c
...
[root@web1 root]# ls $APACHE/module
(1.3.29 이전 버전은 $APACHE/libexec 확인)
mod_ssl.so ...
[root@web1 root]#
웹서버에 설치된 모듈중에 mod_so.c 을 먼저 확인합니다. 그리고 DSO module로 설치된 모듈중에 mod_ssl.so 을 확인합니다.
만약에 mod_ssl 모듈이 설치되어있지 않다면, Apache 1.3.xx + mod_ssl 설치 가이드 참고하시고 Apache 웹서버 mod_ssl 모듈을 설치해 주시면 됩니다. (Apache 1.3.xx + mod_ssl 설치 가이드 보기) 참고적으로 성능이 향상되고, mod_ssl을 내장한 Apache 2.0.xx 설치를 추천해 드립니다.
Apache 2.0.xx 웹서버에 mod_ssl 모듈 설치 확인합니다. Apache 웹서버는 두가지 방식의 모듈 설치를 지원하므로 statically linking module, DSO(Dynamic Shared Objects) module 로 설치된 모듈을 확인할 수 있습니다. - $HTTPD 변수는 아파치 설치 디렉토리를 가르킵니다.
모듈 설치 확인이 되었으면, 다음으로 CSR 파일을 생성합니다. CSR 파일 생성과정에는 Apache 웹서버 SSL 모듈 설치 여부와는 관계없이, openssl 설치된 것으로 생성하실 수 있습니다. 하지만, 인증서가 발행된 다음에 설치에서 문제가 되기 때문에 사전에 웹서버의 SSL 암호화 모듈을 확인해 두는 것입니다.
3. 개인키(비밀키) 생성
Solaris 8 Release 12/02 이하 버전에서 Apache 웹서버를 운영하신다면, [random 옵션사용]을 선택해 주시기 바랍니다. 일반적인 키 생성(random 장치사용) random 옵션사용
- $SSL_KEY_STORE 변수는 ssl 개인키를 보관하는 디렉토리를 가르킵니다.
▣
[root@web1 root]# cd $SSL_KEY_STORE
[root@web1 ssl]# openssl genrsa -des3 -out ssl2005.key 1024
Generating RSA private key, 1024 bit long modulus
.............++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for ssl2005.key: ******
Verifying - Enter pass phrase for ssl2005.key: ******
[root@web1 ssl]#
솔라리스의 경우에는 Solaris 8 Release 12/02 이하 버전에서 /dev/random 장치가 구성되지 않습니다.
openssl 유틸리티는 /dev/random 장치를 이용해서 개인키(비밀키) 생성하게 되므로, /dev/random 장치를 이용할 수 없는 Solaris 8 Release 12/02 이하 버전에서는 다음과 같은 openssl rand 옵션으로 /dev/random 장치를 대신하는 랜덤데이타를 입력합니다.
[root@web1 root]# cd $SSL_KEY_STORE
[root@web1 ssl]# cp [서버로그파일저장경로]/error_log rand.dat
[root@web1 ssl]# openssl genrsa -rand rand.dat -des3 -out ssl2005.key 1024
34523 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
.................................++++++
.......++++++
e is 65537 (0x10001)
Enter pass phrase for ssl2005.key: ******
Verifying - Enter pass phrase for ssl2005.key: ******
[root@web1 ssl]#
패스워드를 설정하라는 메시지가 나오면 원하는 패스워드를 입력합니다. 이 패스워드는 나중에 인증서를 설치할 때 필요하므로 반드시 기억해두셔야 합니다. 입력을 마치면 1024비트 RSA 키가 생성되어 ssl2005.key라는 이름으로 저장됩니다. ssl2005.key는 다른 적당한 이름으로 바꾸어도 무방합니다.
패스워드를 입력하라는 메시지가 나오면 개인키에 설정한 패스워드를 입력합니다. 그러면 위와 같이 생성된 개인키를 확인할 수 있습니다.
5. CSR 생성
인증서를 신청하기 위한 정보를 입력합니다. <주의사항>과 <입력예>를 반드시 읽어주시고 이에 따라서 정보를 입력하시기 바랍니다.
<주의사항> ① Organization(영문회사명)에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 문자를 넣을 수 없습니다. 사업자 등록증에 기재된 회사명과 일치하는 영문회사명을 넣어 주시기 바랍니다. (예: 사업자 등록증에 '닷네임 코리아'이면 dotname korea 으로 넣어주셔야 합니다. dotname만 넣으시면 않됩니다.) 또한, 인증서를 설치할 Common Name(인증 받을 도메인 주소)에 해당하는 도메인의 등록정보를 반드시 참조하셔서 해당 등록정보에 기재된 회사명을 참고 하실 수 있겠습니다. 영문 회사명은 소유하고 계신 도메인이 com/net/org인 경우에는 Network Solutions에서, kr인 경우에는 KRNIC에서 확인할 수 있습니다. ② Common Name(인증 받을 도메인 주소)에는 IP 주소, 포트번호, 경로명, http:// 등을 포함할 수 없습니다. ③ 정보입력 과정에서 마지막에 나오는 Extra Attributes, 즉 A challenge password와 An optional company name은 입력하지 마시고 Enter키만 눌러주셔야 합니다. 두 항목에 내용을 입력하실 경우 잘못된 CSR이 생성될 수 있습니다.
<입력 예>
Country Name (국가코드) : KR State or Province Name (시/도) : Seoul Locality Name (구/군) : Songpa Organization Name (회사명) : Dotname Korea Organizational Unit Name (부서명) : Digital Certificate Team Common Name (인증 받을 도메인 주소) : www.anycert.co.kr Email Address : Please enter the following 'extra' attributes to be sent with your certificate request A challenge password : An optional company name : anycert
- 위의 작업과 계속 연관된 작업을 진행합니다.
▣
[root@web1 ssl]# openssl req -new -key ssl2005.key -out ssl2005.csr
Enter pass phrase for ssl.key: ******
...
Country Name (2 letter code) [KR]:kr
State or Province Name (full name) [Berkshire]:Seoul
Locality Name (eg, city) [Newbury]:Songpa
Organization Name (eg, company) [My Company Ltd]:Dotname Korea
Organizational Unit Name (eg, section) []:Digital Certificate Team
Common Name (eg, your name or your server's hostname) []:www.anycert.co.kr
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ******
An optional company name []:anycert
[root@web1 ssl]#
(개인키 파일인 ssl2005.key 로부터 CSR 파일인 ssl2005.csr이 생성됩니다. ssl2005.csr은 다른 이름으로 바꾸어도 됩니다.)
이 CSR 문서를 반드시 첫줄(-----BEGIN CERTIFICATE REQUEST-----)과 끝줄(-----END CERTIFICATE REQUEST-----)이 포함되도록 복사하여 메모장에 붙여넣기 합니다. 이 CSR을 애니서트 메일로 첨부해 주시기 바랍니다.
9. 네트웍 확인 사항 - SSL 적용에 따른 방화벽, L4 switch 설정 확인
고객님 웹서버에 SSL 을 적용하게 되면, http:// (기본 80 포트)통신과 https:// (기본 443 포트) 통신를 사용하게 됩니다. 그러므로, 웹서버에 설정된 방화벽이나 L4 switch의 설정을 기존 80 포트 설정과 같이 443 포트도 추가 설정해 주셔야 합니다. 정식 인증서를 발행하기까지 웹서버의 네트웍 환경설정에 443 포트를 열어주시는 계획을 세워주기 바랍니다.