Linux

[ CentOS ] SSL 적용기 (3) - OpenSSL 을 이용한 무료 인증서 만들기(Host 편)

율토리 촌장 2020. 1. 13. 16:21

 

앞 장에서 만든 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 인증서를 적용하러 가보자!!

 

☞ SSL 적용하러 가기

 

 

 

 

 

- 관련 포스트 -

1. [CentOS] SSL 적용기 (1) - 사전 개념 이해  바로가기

2. [CentOS] SSL 적용기 (2) - OpenSSL 을 이용한 무료 인증서 만들기 (RootCA 편)  바로가기

3. [CentOS] SSL 적용기 (3) - OpenSSL 을 이용한 무료 인증서 만들기 (Host 편)   바로가기

4. [CentOS] SSL 적용기 (4) - 인증서 적용하기 (Apache)   바로가기