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

사전 구성 환경

  • OpenSSL 라이브러리 http://www.openssl.org/
  • TLS / SHA-2(sha256) 암호화 지원 모듈 구성/활성 확인 필수

진행 과정

  1. 개인키(Private Key) 생성
  2. CSR(Certificate Signing Request) 생성
  3. 인증서 발급 신청 제출
  4. 인증서 설치 적용
  5. 정상 적용 완료 테스트

개인키(Private Key) 생성

본 과정은, 인증서 신청시 자동생성 이용을 권장합니다
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) 생성

본 과정은, 인증서 신청시 자동생성 이용을 권장합니다
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 []:webmaster@example.com (이메일)

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

인증서 신청 CSR

본 과정은, 인증서 신청시 자동생성 이용을 권장합니다
-----BEGIN CERTIFICATE REQUEST-----
MIIC5TCCAc0CAQAwgZ8xCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVTZW91bDERMA8G
A1UEBxMIR2FuZy1uYW0xGDAWBgNVBAoTD1NlY3VyZUxheWVyIEluYzERMA8GA1UE
-- 중략 --
wxd+87gwsvAC2dyK8I4N1ttXDRJcDPCDe1BGqWvYYAZN7FbvnbHCM7y/SN++pxbS
jbnkoe8uStQvfCo6DW5MZHUli5+lRU/UpA==
-----END CERTIFICATE REQUEST-----

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

인증서 파일 통합

1. cat domain_xxxxx.crt.pem > unified.myssl.pem
2. cat ca-bundle.pem >> unified.myssl.pem

서버 인증서 부터 체인 인증서, 그리고 루트 인증서 순서대로 설치 합니다. 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다. 위 예제는, 서버인증서 + 체인인증서 + 루트인증서를 unified.myssl.pem 1개 파일로 통합하는 과정입니다.

nginx.conf 적용 예제

server {
listen 443;
ssl on;
server_name www.securesign.kr;

ssl on;
ssl_certificate /파일경로/unified.myssl.pem;
ssl_certificate_key /파일경로/domain_xxxxx.key.pem (private.key);

location /
root path
}
}

* unified.myssl.pem 는 서버인증서+체인인증서+루트인증서를 1개 파일로 통합한 PEM 파일입니다.
* 예제에 포함되어 있지 않은 Property 는 공식 매뉴얼 또는 서버별 속성값을 사용합니다.
* domain_xxxxx.key.pem 개인키는 CSR 자동생성 신청시 발급 완료후 첨부파일에 첨부해 드립니다.

주요 이슈 사항