Linux

[Linux] OpenSSL 사설 인증서 발급하기

IT-PAPA 2023. 2. 16. 06:30
728x90
반응형

OpenSSL을 이용하여 인증기관을 만들고 Self signed certificate를 생성하고 SSL 인증서를 발급해 보자. 

인증서는 개인키 소유자의 공개키(public key)에 인증기관의 개인키로 전자서명한 DATA 다.

모든 인증서는 발급기관(CA) 이 있어야 하나 최상위에 있는 인증기관(root ca)은 서명해줄 상위 인증기관이 없으므로 root ca의 개인키로 스스로의 인증서에 서명하여 최상위 인증기관 인증서를 만든다.

반응형

공개키, 개인키 생성 - CA  가 사용할 RSA key pair

openssl genrsa -aes256 -out private-rootca.key 2048
Enter pass phrase for private-rootca.key: 비밀번호 설정

private-rootca.key 생성
private-rootca.key 생성

 

CSR(Certificate Signing Request) 생성을 위해 openssl.con 파일 생성

vi rootca_openssl.conf
[ req ]
default_bits            = 2048
default_md              = sha1
default_keyfile         = private-rootca.key
distinguished_name      = req_distinguished_name
extensions             = v3_ca
req_extensions = v3_ca
 
[ v3_ca ]
basicConstraints       = critical, CA:TRUE, pathlen:0
subjectKeyIdentifier   = hash
##authorityKeyIdentifier = keyid:always, issuer:always
keyUsage               = keyCertSign, cRLSign
nsCertType             = sslCA, emailCA, objCA

[req_distinguished_name ]
countryName                     = 국가코드(2글자)
countryName_default             = KR
countryName_min                 = 2
countryName_max                 = 2

# 회사명 입력
organizationName              = 기관명
organizationName_default      = betwe
 
# 부서 입력
#organizationalUnitName          = 부서명
#organizationalUnitName_default  = betwe
 
# SSL 서비스할 domain 명 입력
commonName                      = 도메이몀 (eg, your name or your server's hostname)
commonName_default             = betwe.co.kr
commonName_max                  = 64

 

CSR 파일 및 crt 파일 생성

openssl req -new -key private-rootca.key -out rootca.csr -config rootca_openssl.conf

CSR 파일 및 crt 파일 생성
CSR 파일 및 crt 파일 생성

 

10년짜리 self-signed 인증서를 생성

openssl x509 -req -days 3650 -extensions v3_ca -set_serial 1 -in private-rootca.csr -signkey private-rootca.key -out private-rootca.crt -extfile rootca_openssl.conf

 

RootCA 인증서 확인

openssl x509 -text -in private-rootca.crt

RootCA 인증서 확인
RootCA 인증서 확인

 

============================================================================================

SSL 인증서 발급

개인키 생성

openssl genrsa -aes256 -out betwe.co.kr.key 2048

개인키 생성
개인키 생성

 

SSL 인증서 암호 제거 - 웹서버 구동 시 암호를 입력해야하므로 편의상 제거. 하지만 상관없다면 이 부분은 스킵!

cp -p betwe.co.kr.key betwe.co.kr.key.enc
openssl rsa -in betwe.co.kr.key.enc -out betwe.co.kr.key

SSL 인증서 암호 제거
SSL 인증서 암호 제거

CSR 생성

vi ssl_openssl.conf
[ req ]
default_bits            = 2048
default_md              = sha1
default_keyfile         = private-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 의 도메인 이름을 적어준다.
## 멀티 도메인일 경우 *.betwe.co.kr 처럼 쓸 수 있다.
DNS.1   = www.betwe.co.kr
DNS.2   = betwe.co.kr
DNS.3   = *.betwe.co.kr

[req_distinguished_name ]
countryName                     = 국가코드 (2자리)
countryName_default             = KR
countryName_min                 = 2
countryName_max                 = 2

# 회사명 입력
organizationName              = 회사명
organizationName_default      = betwe
 
# 부서 입력
organizationalUnitName          = 부서명
organizationalUnitName_default  = betwe
 
# SSL 서비스할 domain 명 입력
commonName                      = 도메인
commonName_default             = betwe.co.kr
commonName_max                  = 64

 

CSR 파일 생성

openssl req -new -key betwe.co.kr.key -out betwe.co.kr.csr -config ssl_openssl.conf

CSR 파일 생성
CSR 파일 생성

 

10년짜리 betwe.co.kr 용 SSL 인증서 발급 (서명시 ROOT CA 개인키로 서명)

openssl x509 -req -days 3650 -extensions v3_user -in betwe.co.kr.csr -CA private-rootca.crt -CAcreateserial -CAkey private-rootca.key -out betwe.co.kr.crt -extfile ssl_openssl.conf

10년짜리 betwe.co.kr 용 SSL 인증서 발급
10년짜리 betwe.co.kr 용 SSL 인증서 발급

 

SSL 인증서 확인

openssl x509 -text -in betwe.co.kr.crt

SSL 인증서 확인
SSL 인증서 확인

 

728x90
반응형
LIST