반응형
개발 또는 엔지니어링을 할 시에 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
반응형
'Linux > Ubuntu' 카테고리의 다른 글
SK 브로드밴드 인터넷 사용자 VM ssh 22번 포트 불가능 (1) | 2023.05.25 |
---|---|
Ubuntu 16.04, 18.04 DNS 변경 (0) | 2022.02.02 |