[ CentOS ] SSL 적용기 (3) - OpenSSL 을 이용한 무료 인증서 만들기(Host 편)
앞 장에서 만든 RootCA(최상위 기관) 의 개인키를 이용하여, 내 사이트에 적용할 인증서를 만들어 보자.
( 앞 포스트의 내용을 잘 수행하였다면, 현재 포스트의 내용을 수행하기가 쉬울 것이다. 방법이 거의 비슷하니까! )
1. [ Host 편 ] SSL을 적용할 사이트의 개인키 생성
openssl genrsa -aes256 -out /etc/pki/tls/private/사이트 개인키 파일명 2048
ex) openssl genrsa -aes256 -out /etc/pki/tls/private/yultory.com.key 2048
2. [ Host 편 ] (선택사항) 위 1번에서 개인키 생성시 입력한 Password 제거하고 싶다면 ?
Password 를 제거하지 않아도 되지만, 제거하지않을 경우 Apache 구동시마다 패스워드를 입력해야한다.
cp /etc/pki/tls/private/yultory.com.key /etc/pki/tls/private/yultory.com.key.enc
openssl rsa -in /etc/pki/tls/private/yultory.com.key.enc -out /etc/pki/tls/private/yultory.com.key
3. [ Host 편 ] 사이트의 개인키 권한 변경. ( 이유는 앞 포스트시 적었다!! 촌장은 친절하지 않다. 다시 설명하지 않겠다! )
chmod 600 /etc/pki/tls/private/yultory.com.key*
4. [ Host 편 ] CSR (Certificate Signing Request - 인증서 발급 신청서) 생성을 위한 설정 파일 만들기
[ req ] default_bits = 2048 default_md = sha1 default_keyfile = RootCA(최상위 기관) 개인키 파일 distinguished_name = req_distinguished_name extensions = v3_user ## 인증서 요청시에도 extension 이 들어가면 authorityKeyIdentifier 를 찾지 못해 에러가 나므로 막아둔다. ## req_extensions = v3_user [ v3_user ] # Extensions to add to a certificate request basicConstraints = CA:FALSE authorityKeyIdentifier = keyid,issuer subjectKeyIdentifier = hash keyUsage = nonRepudiation, digitalSignature, keyEncipherment ## SSL 용 확장키 필드 extendedKeyUsage = serverAuth,clientAuth subjectAltName = @alt_names [ alt_names] ## Subject AltName의 DNSName field에 SSL Host 의 도메인 이름을 적어준다. DNS.1 = www.도메인 DNS.2 = 도메인 DNS.3 = *.도메인 [req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = KR countryName_min = 2 countryName_max = 2 # 회사명 입력 organizationName = Organization Name (eg, company) organizationName_default = yultory Inc. # 부서 입력 organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = yultory SSL Project # SSL 서비스할 domain 명 입력 commonName = Common Name (eg, your name or your server's hostname) commonName_default = yultory.com commonName_max = 64 |
♣ 예시 : Yultory.com 의 CSR 설정 파일 작성 내용
[ req ]
default_bits = 2048
default_md = sha1
default_keyfile = yultory-rootca.key
distinguished_name = req_distinguished_name
extensions = v3_user
## 인증서 요청시에도 extension 이 들어가면 authorityKeyIdentifier 를 찾지 못해 에러가 나므로 막아둔다.
## req_extensions = v3_user
[ v3_user ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
authorityKeyIdentifier = keyid,issuer
subjectKeyIdentifier = hash
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
## SSL 용 확장키 필드
extendedKeyUsage = serverAuth,clientAuth
subjectAltName = @alt_names
[ alt_names]
## Subject AltName의 DNSName field에 SSL Host 의 도메인 이름을 적어준다.
DNS.1 = www.yultory.com
DNS.2 = yultory.com
DNS.3 = *.yultory.com
[req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = KR
countryName_min = 2
countryName_max = 2
# 회사명 입력
organizationName = Organization Name (eg, company)
organizationName_default = yultory Inc.
# 부서 입력
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = yultory SSL Project
# SSL 서비스할 domain 명 입력
commonName = Common Name (eg, your name or your server's hostname)
commonName_default = yultory.com
commonName_max = 64
5. [ Host 편 ] yultory.com의 CSR (인증서 생성 요청서) 를 만들어주자.
openssl req -new -key /etc/pki/tls/private/yultory.com.key -out /etc/pki/tls/certs/yultory.com.csr -config yultoryHost-openssl.conf
6. [ Host 편 ] RootCA 개인키로 서명된 yultory.com 의 인증서 발급을 받는다.
openssl x509 -req -days 1825 -extensions v3_user -in yultory.com의 인증서 생성 요청서(CSR) \ -CA RootCA(최상위기관)의 인증서(CRT) -CAcreateserial \ -CAkey RootCA(최상위기관)의 개인키 \ -out 생성할 yultory.com의 인증서 파일명 -extfile yultory.com 의 설정 파일 |
openssl x509 -req -days 1825 -extensions v3_user -in /etc/pki/tls/certs/yultory.com.csr \
-CA /etc/pki/tls/certs/yultory-rootca.crt -CAcreateserial \
-CAkey /etc/pki/tls/private/yultory-rootca.key \
-out /etc/pki/tls/certs/yultory.com.crt -extfile yultoryHost-openssl.conf
7. 생성된 인증서를 확인해보고 싶다면 ?
openssl x509 -text -in /etc/pki/tls/certs/yultory.com.crt
SSL 인증서 만드는 방법은 여기까지!
인증서 만드는게 번거롭다면?! 공인기관에서 돈 주고 사오면 된다!
그럼 드디어 SSL 인증서를 적용하러 가보자!!
- 관련 포스트 - 1. [CentOS] SSL 적용기 (1) - 사전 개념 이해 바로가기 2. [CentOS] SSL 적용기 (2) - OpenSSL 을 이용한 무료 인증서 만들기 (RootCA 편) 바로가기 3. [CentOS] SSL 적용기 (3) - OpenSSL 을 이용한 무료 인증서 만들기 (Host 편) 바로가기 |