Apache SSL 인증서 설치/적용 가이드

사전 구성 환경

  • OpenSSL 라이브러리 http://www.openssl.org/ : openssl 1.0.x 이상 권장
  • Apache w/mod_ssl http://www.modssl.org/ : http.conf 에서 mod_ssl 모듈 활성화 (LoadModule ssl_module modules/mod_ssl.so)
  • TLS / SHA-2(sha256) 암호화 지원 모듈 구성/활성 확인 필수
  • MD5, RC4 등 국제 보안 기구에서 해제를 권장하는 취약한 암호화 모듈 비활성화
  • SSL 2.0, 3.0 및 TLS 1.0 1.1 프로토콜 접속 허용 해제. 최신 TLS 1.2 1.3 설정 권장

진행 과정

  1. 개인키(Private Key) 생성
  2. CSR(Certificate Signing Request) 생성
  3. 인증서 발급 신청 제출
  4. 인증서 발급 완료 (발급내역서/파일설명서 PDF 참조)
  5. 인증서 설치 적용 - 신규,갱신,재발급,도메인추가
  6. 정상 적용 완료 테스트

개인키(Private Key) 생성

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 "CSR 자동생성" 이용을 권장합니다. (현재 과정 필요 없음)
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" PEM 파일이 모두 포함되어 있습니다.
- 추가 포함된 "pfx / jks" 패키지에는, "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
openssl genrsa -des3 -out private.key 2048
  • -des3 : 개인키 암호화 수준 DES3 (Windows Apache 환경은 해당 옵션 제외)
  • -out private.key : 개인키를 저장할 파일명 지정. 개인키 파일은 분실하지 않도록 잘 보관해야 합니다.
  • 2048 : bit

Result

Loading 'screen' into random state - done
Generating RSA private key, 2048 bit long modulus
..........................+++
.....................................................
.....................+++
e is 65537 (0x10001)
Enter pass phrase for pri.kery: (개인키 파일 암호 입력)
Verifying - Enter pass phrase for pri.kery: (개인키 파일 암호 입력)

CSR(Certificate Signing Request) 생성

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 "CSR 자동생성" 이용을 권장합니다. (현재 과정 필요 없음)
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" PEM 파일이 모두 포함되어 있습니다.
- 추가 포함된 "pfx / jks" 패키지에는, "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
openssl req -new -key private.key -out out.csr -config "../share/openssl.cnf"
또는
openssl req -new -key private.key -out out.csr -subj "/C=KR/ST=Seoul/L=Gang-nam/O=SecureSign Inc/OU=Dev Team/CN=example.com"
  • -key private.key : 앞서 생성한 개인키 파일 지정
  • -outout.csr : 생성될 CSR 파일명 지정
  • -config "../share/openssl.cnf" : cnf 위치를 확인하지 못하는 경우 cnf 파일 경로 지정
  • -subj : CSR 생성시 입력이 필요한 정보 지정
    • C : ISO 국가 코드 KR, US, CN, JP (대문자)
    • ST : 시,도
    • L : 구,군
    • O : 기관명, 회사명
    • OU : 조직명
    • CN : 도메인명, 일반이름. IP 주소는 CN 으로 사용할수 없습니다.
    • 위 항목은 모두 영문입력을 해야 합니다. 특수문자를 사용하면 안됩니다.

  • (예제에 사용된 이름은 예제용이므로 해당 도메인 정보로 지정하시기 바랍니다)

Wildcard

CN : *.example.com 과 같은 패턴 이어야 합니다.

MultiDomain

CN : example.com 대표성을 가진 도메인 1개만 입력 합니다. 포함될 나머지 도메인 목록은 신청서에 별도 입력합니다.

Result

Enter pass phrase for pri.kery: (개인키 패스워드 입력)
Loading 'screen' into random state - done
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) [AU]:KR (국가코드 C)
State or Province Name (full name) [Some-State]:Seoul (시,도 ST)
Locality Name (eg, city) []:Gang-nam (구,군 L)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SecureSign Inc (기관명 O)
Organizational Unit Name (eg, section) []:Dev Team (조직명 OU)
Common Name (eg, YOUR name) []:example.com (도메인명 CN)
Email Address []:[email protected] (이메일)

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

생성된 CSR 예제

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 "CSR 자동생성" 이용을 권장합니다. (현재 과정 필요 없음)
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" PEM 파일이 모두 포함되어 있습니다.
- 추가 포함된 "pfx / jks" 패키지에는, "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
-----BEGIN CERTIFICATE REQUEST-----
MIIC5TCCAc0CAQAwgZ8xCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVTZW91bDERMA8G
A1UEBxMIR2FuZy1uYW0xGDAWBgNVBAoTD1NlY3VyZUxheWVyIEluYzERMA8GA1UE
-- 중략 --
wxd+87gwsvAC2dyK8I4N1ttXDRJcDPCDe1BGqWvYYAZN7FbvnbHCM7y/SN++pxbS
jbnkoe8uStQvfCo6DW5MZHUli5+lRU/UpA==
-----END CERTIFICATE REQUEST-----

앞서 생성한 CSR 파일은 Base64 포맷의 PEM Text 이며, 텍스트 편집기를 이용하여 파일을 오픈합니다. -----BEGIN ~ REQUEST----- 까지 포함하여 내용 전체를 복사하여 신청서에 입력합니다. (----- 를 누락하거나, 새로운 빈출이 추가되지 않도록 주의하세요)

인증서 발급 완료

- 발급 완료 후에는, 메일첨부 또는 주문상세의 압축파일(zip)에 인증서 파일이 포함되어 있습니다.
- 서버 적용에 필요한 파일들에 대해서, 발급 내역서 PDF 및 루트/체인 설명 PDF를 통해서 미리 숙지해야 합니다.
- 이후 과정 부터는, 서버에 SSL 인증서 설치/적용/확인 절차 입니다. (인터넷에 공개된 설정법과 차이 없음)

VirtualHost 적용 예제 (서버 인증서 발급 받은 후)

<VirtualHost *:443>
ServerName "아래 지정한 서버 인증서에 포함된 DNS Name 중에 있어야 함 "
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 또는 TLSv1 TLSv1.1 TLSv1.2 (서버 환경에 따라서 선택적 적용)
SSLCertificateKeyFile /인증서파일경로/개인키 ex. domain_xxxxx.key.pem
SSLCertificateFile /인증서파일경로/서버인증서 ex. domain_xxxxx.crt.pem
SSLCertificateChainFile /인증서파일경로/체인인증서ex. chain-bundle.pem
SSLCACertificateFile /인증서파일경로/루트인증서 ex. AddTrustRoot.crt.pem
</VirtualHost>

* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* chain-bundle.pem 은 체인인증서가 여러개인 경우 1개 파일로 통합한 PEM Text 파일입니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* 예제에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 현재 서버 설정값을 사용하시기 바랍니다. (/conf/extra/httpd-ssl.conf 참조)

VirtualHost 적용 예제 - Apache 2.4.8 + (서버 인증서 발급 받은 후)

<VirtualHost *:443>
ServerName "아래 지정한 서버 인증서에 포함된 DNS Name 중에 있어야 함 "
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 또는 TLSv1 TLSv1.1 TLSv1.2 (서버 환경에 따라서 선택적 적용)
SSLCertificateKeyFile /인증서파일경로/개인키 ex. domain_xxxxx.key.pem
SSLCertificateFile /인증서파일경로/서버+체인 PEM 통합된 파일 ex. domain_unified.pem
SSLCACertificateFile /인증서파일경로/루트인증서 ex. AddTrustRoot.crt.pem
</VirtualHost>

* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* domain_unified.pem 은 서버인증서와 체인인증서 PEM 을 Text 편집기로 통합한 파일입니다. (직접 만들어야 함)
* 통합된 domain_unified.pem 파일을 Text 편집기로 열어서, PEM 내용간 구분되어 있는지 꼭 확인해야 합니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* 예제에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 현재 서버 설정값을 사용하시기 바랍니다. (/conf/extra/httpd-ssl.conf 참조)

설치 적용 확인 및 변환

* 서버에 SSL 설정 적용 후, 웹서버를 재시작하여 시작시 오류 또는 경고가 있는지 콘솔/데몬 로그를 필히 확인해야 합니다. (필수 확인 사항)
* PC 및 스마트폰의 "Chrome / Firefox / IE / Edge" 각 웹브라우져에서 "루트,체인,SSL,TLS" 경고가 발생 하는지 확인해야 합니다.

SSL 설치/적용 트러블슈팅 SSL 설치 적용 확인 하기 체인인증서 적용 확인 방법 인증서 포맷 변환 방법 TrustLogo 적용 방법