원문 : https://www.securesign.kr/guides/Apache-SSL-Certificate-Install
그러므로, 고객사별 다양한 서버 구성 환경에서 적용 성공 및 가이드 내용에 대해 일체 보장(보증) 및 관여하지 않습니다. 특정 환경에서의 적용 및 이로 인한 서버 오류 발생시, 해당 웹서버 공급사 기술지원 / 인터넷 공개자료 / 관련 커뮤니티를 통해서 지원 받으시기 바랍니다.
사전 구성 환경
- OpenSSL 라이브러리 http://www.openssl.org/ : openssl 1.0.1 이상 권장
- 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 설정 권장
진행 과정
- 개인키(Private Key) 생성
- CSR(Certificate Signing Request) 생성
- 인증서 발급 신청 제출
- 인증서 발급 완료 (발급내역서/파일설명서 PDF 참조)
- 인증서 설치 적용 – 신규,갱신,재발급,도메인추가
- 서버 정상 적용 완료 테스트
- 웹페이지에 https:// 링크 적용
개인키(Private Key) 생성
– SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 “CSR 자동생성” 이용을 권장합니다. (현재 과정 필요 없음)
– CSR 자동생성 발급 완료시, “개인키, 서버인증서, 체인인증서, 루트인증서” PEM 파일이 모두 포함되어 있습니다.
– 추가 포함된 “pfx / jks” 패키지에는, “개인키+서버인증서+체인인증서+루트인증서” 가 모두 통합되어 있습니다.
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” 패키지에는, “개인키+서버인증서+체인인증서+루트인증서” 가 모두 통합되어 있습니다.
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.KR/OU=Dev Team/CN=example.com”
- -key
private.key
: 앞서 생성한 개인키 파일 지정 - -out
out.csr
: 생성될 CSR 파일명 지정 - -config “../share/openssl.cnf” : cnf 위치를 확인하지 못하는 경우 cnf 파일 경로 지정
- -subj : CSR 생성시 입력이 필요한 정보 지정
-
- C : ISO 국가 코드 KR, US, CN, JP (대문자)
- ST : 시,도
- L : 구,군
- O : 기관명, 회사명
- OU : 조직명
- CN : 도메인명, 일반이름. IP 주소는 CN 으로 사용할수 없습니다.
-
위 항목은 모두 영문입력을 해야 합니다. 특수문자를 사용하면 안됩니다.
- (예제에 사용된 옵션 값 등은 예제용이므로, 실제 해당 도메인 정보로 지정하시기 바랍니다)
Single
Wildcard
MultiDomain
CN : example.com
대표성을 가진 FQDN 도메인 1개만 입력 합니다.
SAN : 인증서에 포함될 나머지 FQDN 도메인은, 신청서 작성중 DCV 설정 단계에서 추가 입력합니다.
Multi-Wildcard
CN : example.com
대표 루트 도메인 1개을 CN으로 입력 합니다.
SAN : *.example.com
형식의 와일드카드 도메인은, 신청서 작성중 DCV 설정 단계에서 추가 입력합니다.
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.KR (기관명 O)
Organizational Unit Name (eg, section) []:Dev Team (조직명 OU)
Common Name (eg, YOUR name) []:example.com (도메인명 CN)
Email Address []:webmaster@example.com (이메일)
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: enter (설정 X)
An optional company name []: enter (설정 X)
생성된 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 인증서 설치/적용/확인 절차 입니다. (인터넷에 공개된 설정법과 차이 없음)
– 서버이름표시(SNI) 지원되는 서버의 경우, SSL 인증서 마다 각 포트 구분없이 모두 443 포트 적용가능합니다.
– SNI 설정으로 하는 경우, 클라이언트에서 SNI 미지원 하는 경우 접속 호환성 문제가 있으므로 미리 검토해야 합니다.
VirtualHost 적용 예제 (서버 인증서 발급 받은 후)
SSLEngine
on
SSLProtocol all -SSLv2 -SSLv3 또는 TLSv1 TLSv1.1 TLSv1.2 (서버 환경에 따라서 선택적 적용)
SSLCertificateKeyFile /인증서파일경로/
개인키
ex. domain_xxxxx.key.pemSSLCertificateFile /인증서파일경로/
서버인증서
ex. domain_xxxxx.crt.pemSSLCertificateChainFile /인증서파일경로/
체인인증서
ex. chain-bundle.pemSSLCACertificateFile /인증서파일경로/
루트인증서
ex. AAACertificateServicesRoot.crt.pem
</VirtualHost>
* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* chain-bundle.pem 은 체인인증서가 여러개인 경우 1개 파일로 통합한 PEM Text 파일입니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* 예제에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 현재 서버 설정값을 사용하시기 바랍니다. (/conf/extra/httpd-ssl.conf 참조)
VirtualHost 적용 예제 – Apache 2.4.8 + (서버 인증서 발급 받은 후)
SSLEngine
on
SSLProtocol all -SSLv2 -SSLv3 또는 TLSv1 TLSv1.1 TLSv1.2 (서버 환경에 따라서 선택적 적용)
SSLCertificateKeyFile /인증서파일경로/
개인키
ex. domain_xxxxx.key.pemSSLCertificateFile /인증서파일경로/
서버+체인 PEM 통합된 파일
ex. domain_unified.pemSSLCACertificateFile /인증서파일경로/
루트인증서
ex. AAACertificateServicesRoot.crt.pem
</VirtualHost>
* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* 통합 pem 파일 생성 : cat domain_xxxxx.crt.pem chain-bundle.pem > unified.domain.pem (cat, type 명령어 사용)
* 통합된 domain_unified.pem 파일을 Text 편집기로 열어서, PEM 내용간 구분되어 있는지 꼭 확인해야 합니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* 예제에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 현재 서버 설정값을 사용하시기 바랍니다. (/conf/extra/httpd-ssl.conf 참조)
설치 적용 확인 및 변환
* 서버에 SSL 설정 적용 후, 웹서버를 재시작하여 시작시 오류 또는 경고가 있는지 콘솔/데몬 로그를 필히 확인해야 합니다. (필수 확인 사항)
* SSL 발급 도메인 웹페이지에 https:// 링크 적용을 별도 진행해야 최종적으로 SSL 암호화가 적용됩니다. (개발자,웹디자이너)
* PC 및 스마트폰의 “Chrome / Firefox / IE / Edge” 각 웹브라우져에서 “루트,체인,SSL,TLS” 경고가 발생 하는지 확인해야 합니다.
SSL 설치/적용 트러블슈팅
SSL 설치 적용 확인 하기
체인인증서 적용 확인 방법
인증서 포맷 변환 방법
TrustLogo 적용 방법
관련 주요 이슈 사항
- Apache 에서 SNI 방식 SSL 인증서 conf 설정 예
- SSL 인증서 적용시, 서버 이름 표시 (SNI) 지원 서버 및 클라이언트
- 서버에 보안이 약한 임시 Diffie-Hellman 공개 키가 있습니다
- 연결이 비공개로 설정되어 있지않습니다
- ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- 페이지에 안전하지 않은 다른 리소스, 혼합된 콘텐츠 차단, 자물쇠 표시 없음
- Apache, NginX 등 웹서버 SSL/TLS Cipher Suite 권장 값
- SSLCertificateChainFile deprecated 오류
- apachectl 실행시 “The startssl option is no longer supported”
- X509_check_private_key:key values mismatch 오류
- CommonName (CN) xxxxx does NOT match server name 오류
- 주요 웹브라우져 SSL v2 v3 및 TLS 1.0, 1.1 지원 삭제
참고 추가 자료
CA 고객지원 (영문)
- Sectigo https://support.sectigo.com/Com_KnowledgeMainPage
- GeoTrust https://knowledge.geotrust.com/support/knowledge-base/index.html
- Thawte https://search.thawte.com/support/ssl-digital-certificates/index?page=content&id=SO26579#links
- RapidSSL https://knowledge.rapidssl.com/support/ssl-certificate-support/index.html
Comments