본문 바로가기
Linux/Ubuntu

사설인증서 발급받기(OpenSSL RootCA, 도메인 인증서)

by 썩석 2022. 1. 2.
반응형

개발 또는 엔지니어링을 할 시에 localhost UI로는 확인이 불가능할 때가 있습니다.

그럴 때는 OpenSSL을 이용하여 사설 인증서를 발급 받아 사용해야 합니다.

그럼 인증서 받는 방법을 적어보겠습니다~~~

 

환경

OS: Ubuntu 18.04

 

Root인증서 발급

1. 개인키 생성

$ openssl genrsa -aes256 -out rootca.key 2048	##RSA 키발급
$ password 입력	##키의 비밀번호 설정
$ chmod 600 rootca.key	##키 권한 설정

 

2. CSR 생성을 위해 conf 파일 생성

$ vi rootca_openssl.conf	##CSR 파일을 위한 설정파일 만들기

[req]
default_bits            = 2048
default_md              = sha1
default_keyfile         = 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 = KR
countryName_default             = KR
countryName_min                 = 2		
countryName_max                 = 2

organizationName              = company
organizationName_default      = company
# 부서 입력
#organizationalUnitName          = depart
#organizationalUnitName_default  = depart

# SSL 서비스할 domain 명 입력
commonName                      = test-example.com
commonName_default             = test-example.com
commonName_max                  = 64

 

구분 예시
contryName(국가명) KR(Korea)
OrganizationName(기관명) company
organizationUnitName(부서명) depart
commonName(도메인명) test-example.com

 

3. CSR 파일 생성

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

days의 3650은 인증서의 유효기간을 의미하며 위 코드는 10년을 의미합니다.

위와 같이 conf파일을 생성하지 않고도 만들 수 있습니다.

conf로 만들어놓으면 별다른 설정 필요없이 엔터키만 누르면 생성할 수 있습니다.

4. 인증서 확인

만든 인증서를 확인해보려고 하려면 rootca.crt파일을 복사하여 Online-Decoder 사이트에 접속하여 확인해보면 됩니다.

제가 확인하는 사이트는 아래와 같습니다.

https://www.sslshopper.com/certificate-decoder.html

도메인 인증서 발급

1. 개인키 발급

$ openssl genrsa -aes256 -out tls.key 2048	##개인키 생성
$ cp tls.key tls.key.enc	##암호제거를 위해 파일복사
$ openssl rsa -in tls.key.enc -out tls.key	##암호키 제거후 덮어 쓰기
$ chmod 600 tls.key*	##키 권한 변경

2. CSR 생성을 위해 conf 파일 생성

$ vi host_openssl.conf

[req]
default_bits            = 2048
default_md              = sha1
default_keyfile         = rootca.key
distinguished_name      = req_distinguished_name
extensions             = v3_user

[ req_distinguished_name ]
[ 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]
DNS.1   = *.test-example.com
DNS.2   = test-example.com

[req_distinguished_name ]
countryName                     = KR
countryName_default             = KR
countryName_min                 = 2
countryName_max                 = 2

# 회사명 입력
organizationName              = company
organizationName_default      = company
# 부서 입력
#organizationalUnitName          = department
#organizationalUnitName_default  = department

# SSL 서비스할 domain 명 입력
commonName                      = *.test-example.com
commonName_default             = *.test-example.com
commonName_max                  = 64
구분 예시
contryName(국가명) KR(Korea)
Organization(기관명) test_example
organizationUnitName(부서명) depart
commonName(도메인명) *.test-example.com

여기서 CN에는 subdomain 전체를 사용할 수 있게 *를 붙여서 생성합니다.

 

3. CSR 파일 생성

$ openssl req -new -key tls.key -out tls.csr -config host_openssl.conf
$ openssl x509 -req -days 3650 -extensions v3_user -in tls.csr -CA rootca.crt -CAcreateserial -CAkey rootca.key -out tls.crt -extfile host_openssl.conf

root 인증서와 마찬가지로days의 3650은 인증서의 유효기간을 의미하며 위 코드는 10년을 의미합니다.

위와 같이 conf파일을 생성하지 않고도 만들 수 있습니다.

conf로 만들어놓으면 별다른 설정 필요 없이 엔터키만 누르면 생성할 수 있습니다.

 

4. 인증서 확인

만든 인증서를 확인해보려고 하려면 tls.crt파일을 복사하여 Online-Decoder 사이트에 접속하여 확인해보면 됩니다.

제가 확인하는 사이트는 아래와 같습니다.

https://www.sslshopper.com/certificate-decoder.html

 

반응형