ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ROOT CA 생성 및 Self Signed Certificate 만들기
    IT 2021. 8. 15. 17:23
    반응형

    최근 대부분의 서비스들은 Web으로 제공되고 있으며 브라우저에서 http로 제공되는 웹페이지는 신뢰할 수 없는 사이트로 워닝을 표시하고 https로의 전환을 유도하고 있다. 서버에서 인터넷 접속이 원활하다면 큰 어려움없이 공인 인증서를 발급받아 사용하면 되지만 그렇지 않은 환경에서는 Self Signed Certificate를 생성하고 배포하는게 일반적일것이다. 여기에서는 Self Signed Certificate를 생성하는 방법을 정리하고자 한다. 1년에 한번은 꼭 하게되는 작업이고 전체 배경만 알면 그리 어려움 없이 할 수 있는 작업이라 절차 중심으로 정리하였다. 

     

    Prerequisite

    - CentOS 8

    - Openssl

     

    ROOT CA 인증서 생성

    CA Private Key 생성

    ca가 사용할 RSA key pair(public, private key)를 생성한다. AES 256bit로 암호화하여 생성하면 향후에 key 파일을 잃어 버렸을때 암호만 알면 다시 생성 가능하므로 AES를 선택하였고 서버에 바로 적용할 예정이 아니므로 파일 권한은 고려하지 않았다.

    [awslife@cumulus rootca-homelab]$ openssl genrsa -aes256 -out homelab.local.rootca.key 4096
    Generating RSA private key, 4096 bit long modulus (2 primes)
    .......................++++
    .................................................................................................++++
    e is 65537 (0x010001)
    Enter pass phrase for homelab.local.rootca.key:
    Verifying - Enter pass phrase for homelab.local.rootca.key:
    [awslife@cumulus rootca-homelab]$

     

    CA certificate 생성

    CA 인증서를 생성한다. 내부적으로 사용할 예정이므로 -nodes(no DES)와 -subj 옵션을 지정한다. 이는 개인키를 암호화하지 않고 FQDN 정보를 나타낸다.

    [awslife@cumulus rootca-homelab]$ openssl req -x509 -new -nodes -sha512 -days 3650 \
      -subj "/C=CN/ST=Seoul/L=Seoul/O=home/OU=devops/CN=homelab.local" \
      -key homelab.local.rootca.key \
      -out homelab.local.rootca.crt
    Enter pass phrase for homelab.local.rootca.key:
    [awslife@cumulus rootca-homelab]$

     

    서버 인증서 생성

    서버 인증서 생성 과정도 ROOT CA 생성 과정과 크게 다르지 않다.

     

    서버 개인키 생성

    개인키를 생성한다. 개인키 생성 방법은 ROOT CA에서의 개인키 생성 방법과 동일하다.

    [awslife@cumulus rootca-homelab]$ openssl genrsa -aes256 -out bootstrap.homelab.local.key 4096
    Generating RSA private key, 4096 bit long modulus (2 primes)
    ......................++++
    .++++
    e is 65537 (0x010001)
    Enter pass phrase for bootstrap.homelab.local.key:
    Verifying - Enter pass phrase for bootstrap.homelab.local.key:
    [awslife@cumulus rootca-homelab]$

     

    인증서 서명 요청(Certificate Signing Request) 생성

    인증서 서명 요청 파일을 생성한다. FQDN을 반영하도록 -subj 옵션을 사용한다.

    [awslife@cumulus rootca-homelab]$ openssl req -sha512 -new \
      -subj "/C=CN/ST=Seoul/L=Seoul/O=home/OU=devops/CN=homelab.local" \
      -key bootstrap.homelab.local.key \
      -out bootstrap.homelab.local.csr
    Enter pass phrase for bootstrap.homelab.local.key:
    [awslife@cumulus rootca-homelab]$

     

    x509 v3 확장 파일 생성

    FQDN과 IP 주소 외에 추가적인 DNS 도메인 이름으로도 접속이 가능하도록 v3 확장 파일을 생성한다.

    [awslife@cumulus rootca-homelab]$ cat > bootstrap.homelab.local.v3.ext << EOF
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1=bootstrap.homelab.local
    DNS.2=bootstrap.homelab
    DNS.3=bootstrap
    EOF
    [awslife@cumulus rootca-homelab]$

     

    호스트 인증서 생성

    v3.ext 파일을 사용하여 호스트 인증서를 생성한다.

    [awslife@cumulus rootca-homelab]$ openssl x509 -req -sha512 -days 3650 \
      -extfile bootstrap.homelab.local.v3.ext \
      -CA homelab.local.rootca.crt \
      -CAkey homelab.local.rootca.key \
      -CAcreateserial \
      -in bootstrap.homelab.local.csr \
      -out bootstrap.homelab.local.crt
    Signature ok
    subject=C = CN, ST = Seoul, L = Seoul, O = home, OU = devops, CN = homelab.local
    Getting CA Private Key
    Enter pass phrase for homelab.local.rootca.key:
    [awslife@cumulus rootca-homelab]$

     

     

    References

    - https://www.lesstif.com/system-admin/openssl-root-ca-ssl-6979614.html

     

    OpenSSL 로 ROOT CA 생성 및 SSL 인증서 발급

    서명에 사용할 해시 알고리즘을 변경하려면 -sha256, -sha384, -sha512 처럼 해시를 지정하는 옵션을 전달해 준다. 기본값은 -sha256 이며 openssl 1.0.2 이상이 필요

    www.lesstif.com

    - https://goharbor.io/docs/1.10/install-config/configure-https/

    반응형
Designed by Tistory.