openssl 아스타리카(*) 도메인 인증서 생성

scvit·2023년 7월 28일

목차

1. 루트 인증서 생성
2. 루트에 종속된 도메인 인증서 생성

1. 루트 인증서 생성


1-1. key 생성 (ca.key)

openssl genrsa -out ca.key 2048

chmod 600 ca.key

-aes256 옵션은 패스워드 입력 필요


1-2. conf 파일 생성 (ca.conf)

[ req ]
default_bits            = 2048
default_md              = sha1
default_keyfile         = ca.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

# 회사명 입력
organizationName              = Organization Name (eg, company)
organizationName_default      = DDIMTECH

# 부서 입력
#organizationalUnitName          = Organizational Unit Name (eg, section)
#organizationalUnitName_default  = Solution Technology Team

# SSL 서비스할 domain 명 입력
commonName                      = Common Name (eg, your name or your server's hostname)
commonName_default             = scvit self signed CA
commonName_max                  = 64

1-3. csr 요청서 생성 (ca.csr)

openssl req -new -key ca.key -out ca.csr -config ca.conf

Country Name (2 letter code) [KR]:
Organization Name (eg, company) [DDIMTECH]:
Common Name (eg, your name or your servers hostname) [scvit self signed CA]:

그냥 엔터 치면 Default 값 ( [KR], [DDIMTECH] 등) 이 입력됨.


1-4. crt 생성 (ca.crt)

openssl x509 -req -days 3650 \
-extensions v3_ca \
-set_serial 1 \
-in ca.csr \
-signkey ca.key \
-out ca.crt \
-extfile ca.conf

1-5. 확인

openssl x509 -text -in ca.crt


...
 X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
...


2. 루트에 종속된 도메인 인증서 생성

  • 루트인증서에 종속된 아스타리카(*) 도메인 인증서 만들기

2-1. key 생성 (only.key)

openssl genrsa -out only.key 2048

chmod 600 only.key

2-2. conf 파일 생성 (only.conf)

  • 아스타리카 (*) 도메인 주소의 인증서 만들기
[ req ]
default_bits            = 2048
default_md              = sha1
default_keyfile         = ca.key
distinguished_name      = req_distinguished_name
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]
DNS.1   = <도메인 입력>

[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      =  DDIMTECH

# 부서 입력
organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Solution Technology Team

# SSL 서비스할 domain 명 입력
commonName                      = Common Name (eg, your name or your server's hostname)
commonName_default             = <도메인 입력>
commonName_max                  = 64

[alt_names]와 commonnName_default 에 도메인주소 입력

  • *.ddimtech.click 과 같이 아스타리카도 가능 (sports.naver.com, cafe.naver.com과 같이 ddimtech.click이 있는 모든 도메인에 적용가능)

2-3. csr 요청서 생성 (only.csr)

openssl req -new -key only.key -out only.csr -config only.conf


Country Name (2 letter code) [KR]:
Organization Name (eg, company) [DDIMTECH]:
Organizational Unit Name (eg, section) [Solution Technology Team]:
Common Name (eg, your name or your servers hostname) [*.ddimtech.com]: # 필요한 도메인 주소 입력 

2-4. crt 생성 (only.crt)

openssl x509 -req -days 365 -extensions v3_user -in only.csr -CA ca.crt -CAcreateserial -CAkey ca.key -out only.crt -extfile only.conf

2-5. 확인

openssl x509 -text -in only.crt


Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            67:a3:75:70:f3:de:e1:c4:23:ec:55:a1:b6:75:c4:76:b0:84:32:23
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = KR, O = DDIMTECH, CN = scvit self signed CA
        Validity
            Not Before: Jul 28 05:56:57 2023 GMT
            Not After : Jul 27 05:56:57 2024 GMT
        Subject: C = KR, O = DDIMTECH, OU = Solution Technology Team, CN = *.ddimtech.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            


참고

  • openssl 버전 확인 및 업그레이드

    # openssl 현재 버전 확인
    openssl version 
     
    # openssl 설치 위치 확인
    which openssl
    # /usr/bin/openssl
     
    # OpenSSL 지원 프로토콜 확인
    openssl ciphers -v | awk '{print $2}' | sort | uniq
     
    # 현재 버전 openssl 삭제(하지말고 다른 디렉토리로 이동시키자)
    # yum -y remove openssl
     
    # 기본 라이브러리 설치
    yum -y install gcc gcc-c++ perl pcre-devel zlib-devel wget
     
    # 다운로드 및 소스 컴파일
    wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
    tar xvfz openssl-1.1.1k.tar.gz
    cd openssl-1.1.1k/ 
    ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
    make && make install
    
    # make && make install 안되면 따로 실행
    # sudo make 
    # sudo make install
     
     
    # 새로운 파일 생성하여 아래 한줄 추가하고 저장(:wq)한다. (라이브러리 등록)
    vi /etc/ld.so.conf.d/openssl-1.1.1k.conf
    /usr/local/ssl/lib
     
    # 동적 링크 생성
    ldconfig -v
     
    ln -s /usr/local/ssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -s /usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
     
    # 기존 openssl 이름 변경
    mv /usr/bin/openssl /usr/bin/openssl1.0.2k
     
    # 새로 설치한 버전 심볼릭 링크 생성
    ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
     
    # 업데이트된 버전 확인
    openssl version

  • pem 파일 변환
# key 파일 변환
openssl rsa -in only.key -text > key.pem 

# crt 파일 변환
openssl x509 -inform PEM -in only.crt > crt.pem

JKS to pem

https://mystria.github.io/archivers/get-pem-from-keystore

keytool -importkeystore \
    -srckeystore keystore.jks \
    -destkeystore keystore.p12 \
    -deststoretype PKCS12
  1. 인증서

    openssl pkcs12 -in keystore.p12 -out certificates.pem
openssl pkcs12 -in keystore.p12 -nodes -nocerts -out key.pem

1개의 댓글

comment-user-thumbnail
2023년 7월 28일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기