ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Private root CA를 활용하여 인증 체인 구성하기
    공부합시다!/LInux 2025. 12. 11. 16:39
    728x90

    오늘은 private root CA를 생성하여 하위 인증서를 만들어 보도록 하겠습니다.

    당연히 root CA를 클라이언트의 인증서 목록에 추가 하면 실제 외부 인증서 처럼 경고 메세지 없이 

    정상적으로 암호화하여 사용이 가능합니다.

     

    private root ca  --------------------------> server CA

    이름:rootCA.crt -------------------------->  이름: sdkim.crt

    sdkim.crt는 서버 인증서로 사용을 rootCA.crt는 클라이언트의 "신뢰할 수 있는 루트 인증 기관" 에 등록하는 순서입니다.

    물론 체인인증서까지 서버에 등록을 해주시면 끝!

     

    1. 일단 openssl 패키지와 작업할 디렉토리를 생성합니다.

    # dnf install -y openssl
    # mkdir /cert
    # cd ../cert

     

    2. 인증요청서(csr)에 필요한 SAN(Subject Alternative Name: 주체 대체 정보)정보가 포함된 파일을 생성합니다. 

    root인증서와 서버인증서에 모두 필요함으로 각각 생성합니다.

     

     2.1. root.cnf

    [req]
    default_bits = 2048
    prompt = no
    default_md = sha256
    distinguished_name = dn
    req_extensions = v3_req
    
    [dn]
    C = KR
    ST = Kyounggi-do
    L = Paju-si
    O = KGI
    OU = EDU
    emailAddress = kgi@gmail.com
    CN = root
    
    [v3_req]
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = *.*.local

     

     2.2. sdkim.cnf

    [ req ]
    default_bits = 2048
    prompt = no
    default_md = sha256
    req_extensions = v3_req
    distinguished_name = dn
    
    [dn]
    C = KR
    ST = Seoul
    L = Sungbook-gu
    O = sdkim
    OU = edu
    emailAddress = sdkim@gmail.com
    CN = sdkim
    
    [ v3_req ]
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = *.sdkim.local

     

    3. private root ca의 개인키(rootCA.key)와 server 개인키(sdkim.key)를 생성합니다.

    # openssl genrsa -o rootCA.key 2048
    # openssl genrsa -o sdkim.key 2048

     

    4. private rootCA 인증요청서(rootCA.csr) 및 private 서버 인증요청서(sdkim.csr) 파일 생성

    # openssl req -new -key rootCA.key -config root.cnf -out rootCA.csr
    # openssl req -new -key sdkim.key -config sdkim.cnf -out sdkim.csr
    
    확인
    # openssl req -text -noout -in rootCA.csr
    # openssl req -text -noout -in sdkim.csr

     

     4.1. 확인시 반드시 아래의 정보가 포함되어야 합니다.

     

    5. private rootCA 인증서(rootCa.crt) 및 Private 서버 인증서(sdkim.crt) 생성

    # openssl x509 -req -in rootCA.csr -signkey rootCA.key -out rootCA.crt -extfile root.cnf -extensions v3_req
    # openssl x509 -req -in sdkim.csr -CA rootCA.crt -CAkey rootCA.key CAcreateserial -out sdkim.crt -extfile sdkim.cnf -extensions v3_req
    
    * 확인
    # openssl x509 -text -noout -in rootCA.crt
    # openssl x509 -text -noout -in sdkim.crt

     

     5.1. 확인 시 역시 DNS 정보가 확인되어야 합니다.

     

     5.2. 두 개의 인증서를 합치면 체인 인증서 파일이 됩니다.

    나중에 쓸일이 있으니 미리 만들어 두세요.

    # cat rootCA.crt sdkim.crt > rootsd.crt
    순서 주의 반드시 root 인증서 부터

     

     5.3. /cert 디렉토리의 인증서 및 개인키 파일을 /etc/pki/tls 디렉토리로 이동해주세요! 설정 때 편해 집니다.

    # cp sdkim.crt rootCA.crt sdroot.crt /etc/pki/tls/certs/
    # cp sdkim.key rootCA.key /etc/pki/tls/private/

     

    6. 이제 httpd패키지와 mod_ssl 모듈을 설치해 주세요!

    # dnf install -y httpd mod_ssl

     

    index.html 파일은 /var/www/html/ 디렉토리에 생성해 주세요. 기본 설정 변경하지 않겠습니다.

     

    7. /etc/httpd/conf.d/ssl.conf 파일을 수정해 주세요!

     

     7.1. 설정 후 service 실행 및 방화벽을 오픈해 주세요!

    # systemctl enable --now httpd
    # firewall-cmd --permanent --add-port=443/tcp
    # firewall-cmd --reload

     

    8. Test용 클라이언트로 rootCA.crt를 다운로드 합니다.

    # scp 사용자명@서버IP:/경로지정 다운로드경로지정

     

    9. 클라이언트 측에서 인증서를 등록합니다.

     9.1. 실행 -> certlm.msc

     

     9.2. 인증서 - 로컬 컴퓨터

      9.2.1. 신뢰할 수 있는 루트 인증 기관 -> 인증서 -> 모든 작업 -> 가져오기

     

      9.2.2. 인증서 가져오기 마법사 실행

     

      9.2.2. 다운로드 한 파일을 가져오기 합니다.

     

      9.2.3. 신뢰할 수 있는 루트 인증 기관에 등록합니다.

     

      9.2.4. 완료

     

      9.2.5. 확인 반드시 SAN 정보 확인하세요.

     

     

    10. 클라이언트 브라우저 접속 테스트: 아무런 경고 메세지가 출력되지 않고 https로 접속이 되어야 합니다. 

     

     

    쉽지 않은 작업들입니다.

    하나 하나 차분하게 작업해 보세요!

    인증서에 관해서는 도사들이 되어 있으실 겁니다.

     

    첨부 pfx 파일 만들기

    # openssl pkcs12 -export -out sdkim.pfx -inkey sdkim.key -in sdkim.crt
    728x90
Designed by Tistory.