WEB & WAS/SSL인증서

[OpenSSL] RSA용 RootCA 생성 및 SSL 인증서 만들기

승하연서빠 2024. 5. 21. 11:36
728x90

출처 : https://jykim74.tistory.com/112

RSA 용 SSL 인증서를 만들기를 해보자
먼저 최상위 인증서인 RootCA 인증서를 먼저 만들어야 한다.

최상위 인증서는 Self Signed 인증서 이다.
즉 자신의 개인키로 서명한 인증서가 Self Signed 인증서 이다.

사실 자체적으로 만든 인증서는 기본 브라우저에 등록이 되어 있지 않아 경고를 보여 주지만 테스트용으로 사용하기 위함이다.

아래 명령어를 사용하다 보면 OpenSSL 자체가 기본적으로 사용하는 설정 파일(openssl.cnf) 파일이 있는데
이 설정이 확인이 안된다면
" -config test_openssl.cnf" 이렇게 직접 지정해서 사용 하면 된다.

RootCA 용 RSA 키 쌍 생성

  • CA 가 사용할 RSA 2048 bits Key Pair 생성 
openssl genrsa -out rsa_rootca.key 2048

CSR ( Certificate Signing Request ) 생성

openssl req -new -key rsa_rootca.key -out rsa_rootca.csr

이 명령어를 실행 하면 DN 값 입력을 요청한다.

RootCA 관련 설정 정보

[ req ]
default_bits            = 2048
default_md              = sha1
default_keyfile         = lesstif-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                     = Country Name (2 letter code)
countryName_default             = KR
countryName_min                 = 2
countryName_max                 = 2

RootCA 용 인증서 생성

openssl x509 -req -days 3650 -extensions v3_ca -set_serial 1 -in rsa_rootca.csr -signkey rsa_rootca.key -out rsa_rootca.crt
  • extensions : openssl.cnf 설정 파일에서 [ v3_ca ] 설정 값 사용
  • set_serial : 시리얼 번호 값 설정

RootCA 인증서 정보 확인

openssl x509 -text -in rsa_rootca.crt

발급 인증서 RSA 2048 bit 키 쌍 생성

openssl genrsa -out rsa_cert.key 2048

발급 인증서 CSR 생성

openssl req -new -key rsa_cert.key -out rsa_cert.csr

인증서 DN 정보를 입력한다.

RootCA를 이용한 5년 자리 인증서 발급

openssl x509 -req -days 1824 -extensions v3_user -in rsa_cert.csr -CA rsa_rootca.crt -CAcreateserial -CAkey rsa_rootca.key -out rsa_cert.crt
  • extensions : openssl.cnf 설정 파일에서 [ v3_user ] 설정 값 사용
  • CAcreateserial : 랜덤한 값으로 생성 한다.

openssl.cnf 에서 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 의 도메인 이름을 적어준다.
## 멀티 도메인일 경우 *.test.com 처럼 쓸 수 있다.
DNS.1   = www.test.com
DNS.2   = test.com
DNS.3   = *.test.com

발급한 인증서 정보 보기

openssl x509 -text -in rsa_cert.crt
반응형