Openssl 인증서가 올바르지 않음 - Openssl injeungseoga olbaleuji anh-eum

웹 브라우저에서 https로 접속 시 서버 인증서를 발급한 CA(루트 인증 기관)를 식별한 다음 서버 인증서를 SSL 통신에 사용합니다. 잘 알려진 CA(예: GoDaddy 또는 DigiCert)에 의해 서명된 경우 기본적으로 웹 사이트의 인증서를 신뢰합니다. 이 경우 루트 인증서를 PC에 설치할 필요가 없습니다. 그러나 개발/테스트 환경이 있고 CA 서명된 인증서를 구입하지 않고 사용하려면 사용자 지정 CA를 직접 만들고 자체 서명된 인증서를 만들어서 사용할 수 있습니다.


  • [message]
    • ##info-circle## 참고하기!
      • 자체 서명된 인증서는 기본적으로 신뢰할 수 없으며, 오래된 해시 및 암호 제품군을 사용할 수도 있습니다. 외부에 공개된 웹 사이트에서 보안을 강화하려면 잘 알려진 인증 기관에서 서명한 인증서를 구입해서 사용하십시오.

이 문서에서는 다음 방법을 설명합니다.

  • 사용자 지정 인증서 기관 만들기
  • 사용자 지정 CA에서 서명한 자체 서명 인증서 만들기
  • 웹 서버에 SSL 인증서 적용하기
  • 자체 서명된 루트 인증서를 개인 컴퓨터에 설치해서 웹 서버 인증하기

사전 요구 사항

  • OpenSSL이 설치 된 윈도우나 리눅스
  • 인증서 관리에 사용할 수 있는 다른 도구가 있을 수 있지만 이 문서에서는 OpenSSL을 사용합니다. 오픈 소스인 OpenSSL은 가장 인기 있는 도구 중 하나입니다. 모든 주요 플랫폼에서 사용할 수 있으며, 키 생성을 위한 간단한 명령줄 인터페이스를 제공합니다.
  • 웹 서버
  • NGINX 웹 서버를 사용하여 인증서를 테스트합니다.

실습 환경

  • 운영 체제(OS) : CentOS 8
  • 권한이 있는 root 및 사용자 계정으로 실행
  • 실행 경로 : /root/ssl
  • IP 설정 및 인터넷이 가능한 환경

OpenSSL 설치 확인하기

openssl version 명령어로 확인하기

CentOS 8에서는 기본 번들로 OpenSSL이 설치되어 있습니다.

[openssl version]

[root@runit ssl]# openssl version OpenSSL 1.1.1c FIPS 28 May 2019

루트 인증서(CA) 만들기

OpenSSL을 사용하여 루트 인증서(CA)를 만듭니다.

루트 인증서 키 만들기

OpenSSL이 설치된 서버에 SSH 로그인 후 다음 명령을 실행합니다. 이렇게 하면 암호로 보호된 키가 만들어집니다.


  • rootca.key 파일 만들기
  • [openssl ecparam -out rootca.key -name prime256v1 -genkey]

  • rootca.key 파일 내용 확인하기
  • [cat rootca.key]

    [root@runit ssl]# cat rootca.key -----BEGIN EC PARAMETERS----- BggqhkjOPQMBBw== -----END EC PARAMETERS----- -----BEGIN EC PRIVATE KEY----- MHcCAQEEIIHjF6gSS4xlCP097jjjVkl7w+GjrL/SuvHqYx+su9cboAoGCCqGSM49 AwEHoUQDQgAEquz+t68EzC+xVpjdqH+1k5D7xDjIboRzXi/m/dDsGWceXlwlw385 JHWQujPEqE4tIjY/UoS94DtNUjaoeABxFw== -----END EC PRIVATE KEY-----

    루트 인증서 CSR(인증 서명 요청) 만들기

    다음 명령을 사용하여 인증서 발급에 필요한 정보를 담고 있는 인증서 서명 요청 파일(csr)을 생성합니다.

    rootca.csr 인증 서명 요청 파일 만들기

    입력 프롬프트가 표시되면 정규화된 도메인 이름(발급자의 도메인)과 같은 사용자 지정 CA에 대한 조직 정보를 입력합니다.

    [openssl req -new -sha256 -key rootca.key -out rootca.csr]

    [root@runit ssl]# openssl req -new -sha256 -key rootca.key -out rootca.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:KR State or Province Name (full name) []:Gyeonggi-do Locality Name (eg, city) [Default City]:Hwaseong Organization Name (eg, company) [Default Company Ltd]:RunIT Organizational Unit Name (eg, section) []:Cloud Common Name (eg, your name or your server's hostname) []:RunIT.Cloud CA Root Certificate Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:Enter 누르기 An optional company name []:Enter 누르기

  • rootca.csr 인증 서명 요청 파일 내용 확인하기
  • 암호화된 인증 서명 요청 파일( csr)을 확인할 수 있습니다.

    [cat rootca.csr]

    [root@runit ssl]# cat rootca.csr -----BEGIN CERTIFICATE REQUEST----- MIIBYjCCAQkCAQAwgaYxCzAJBgNVBAYTAktSMRQwEgYDVQQIDAtHeWVvbmdnaS1k bzERMA8GA1UEBwwISHdhc2VvbmcxDjAMBgNVBAoMBVJ1bklUMQ4wDAYDVQQLDAVD bG91ZDEoMCYGA1UEAwwfUnVuSVQuQ2xvdWQgQ0EgUm9vdCBDZXJ0aWZpY2F0ZTEk MCIGCSqGSIb3DQEJARYVd2VibWFzdGVyQHJ1bml0LmNsb3VkMFkwEwYHKoZIzj0C AQYIKoZIzj0DAQcDQgAEquz+t68EzC+xVpjdqH+1k5D7xDjIboRzXi/m/dDsGWce Xlwlw385JHWQujPEqE4tIjY/UoS94DtNUjaoeABxF6AAMAoGCCqGSM49BAMCA0cA MEQCIHEXV+MEF5mJ91HQsr6mtMWzvvIHYAPGPtBlUWsnsq3BAiBOGOQ5skrTdiIM +ACVgnECu/ZqM6BPaBvZJS9WUZACVQ== -----END CERTIFICATE REQUEST-----

    루트 인증서(CA)를 만들고 자체 서명하기

    다음 명령을 사용하여 인증서 발급에 필요한 정보를 담고 있는 인증서 서명 요청 파일(csr) 및 인증서(CA)를 생성합니다.

  • rootca.crt SSL 인증서 파일 만들기
  • 인증 기간은 최대 6자리로 설정할 수 있습니다.
    일반적으로 365일(1년)로 생성하거나 3650일(10년)로 생성할 수 있습니다.
    이 문서에서는 최대 기간인 999999일(2739)년으로 인증서를 생성합니다.

    [openssl x509 -req -sha256 -days 999999 -in rootca.csr -signkey rootca.key -out rootca.crt]

    [root@runit ssl]# openssl x509 -req -sha256 -days 999999 -in rootca.csr -signkey rootca.key -out rootca.crt Signature ok subject=C = KR, ST = Gyeonggi-do, L = Hwaseong, O = RunIT, OU = Cloud, CN = RunIT.Cloud CA Root Certificate, emailAddress = [email protected] Getting Private key

  • rootca.crt SSL 인증서 파일 내용 확인하기
  • 암호화된 SSL 인증서(crt)를 확인할 수 있습니다.

    [cat rootca.crt]

    [root@runit ssl]# cat rootca.crt -----BEGIN CERTIFICATE----- MIICTDCCAfECFEr5tNn4vOOrq6TZlercP9zj9ND6MAoGCCqGSM49BAMCMIGmMQsw CQYDVQQGEwJLUjEUMBIGA1UECAwLR3llb25nZ2ktZG8xETAPBgNVBAcMCEh3YXNl b25nMQ4wDAYDVQQKDAVSdW5JVDEOMAwGA1UECwwFQ2xvdWQxKDAmBgNVBAMMH1J1 bklULkNsb3VkIENBIFJvb3QgQ2VydGlmaWNhdGUxJDAiBgkqhkiG9w0BCQEWFXdl Ym1hc3RlckBydW5pdC5jbG91ZDAgFw0yMDA0MTMwNzQxMzZaGA80NzU4MDMxMDA3 NDEzNlowgaYxCzAJBgNVBAYTAktSMRQwEgYDVQQIDAtHeWVvbmdnaS1kbzERMA8G A1UEBwwISHdhc2VvbmcxDjAMBgNVBAoMBVJ1bklUMQ4wDAYDVQQLDAVDbG91ZDEo MCYGA1UEAwwfUnVuSVQuQ2xvdWQgQ0EgUm9vdCBDZXJ0aWZpY2F0ZTEkMCIGCSqG SIb3DQEJARYVd2VibWFzdGVyQHJ1bml0LmNsb3VkMFkwEwYHKoZIzj0CAQYIKoZI zj0DAQcDQgAEquz+t68EzC+xVpjdqH+1k5D7xDjIboRzXi/m/dDsGWceXlwlw385 JHWQujPEqE4tIjY/UoS94DtNUjaoeABxFzAKBggqhkjOPQQDAgNJADBGAiEA8syO fe6lOTE28ntDB1mUsJAheBEWqxc87+YZNj05Gn0CIQCKDZTwr3W91eRERx/B3+hh JY7KdQNx3ZqiutJu/L4JRQ== -----END CERTIFICATE-----

    서버 인증서 만들기

    서버 인증서 키 만들기

    OpenSSL을 사용하여 서버 인증서를 만듭니다.


  • server.key 파일 만들기
  • 다음 명령을 사용하여 서버 인증서에 대한 키를 생성합니다.

    [openssl ecparam -out server.key -name prime256v1 -genkey]

  • server.key 파일 내용 확인하기
  • 암호화된 키 파일이 생성된 것을 확인할 수 있습니다.

    [cat server.key]

    [root@runit ssl]# cat server.key -----BEGIN EC PARAMETERS----- BggqhkjOPQMBBw== -----END EC PARAMETERS----- -----BEGIN EC PRIVATE KEY----- MHcCAQEEIDngU19/T0y/tf3hs/Dtf9vU884/vSzXhgRKa8K0vy6boAoGCCqGSM49 AwEHoUQDQgAEuCVmi+HEIZID2uOMzkr7hhuIxCUuQE7o9sC69zHzcWdJrpP0VvA2 nPe+LLlz9lX6998BUDWR7+KFrbVKzXrvFg== -----END EC PRIVATE KEY-----

    서버 인증서 CSR(인증 서명 요청) 만들기

    다음 명령을 사용하여 인증서 발급에 필요한 정보를 담고 있는 인증서 서명 요청 파일(csr)을 생성합니다.


    • [message]
      • ##info-circle## 참고하기!
        • 서버 인증서의 CN(일반 이름)은 발급자의 도메인과 달라야 합니다. 예를 들어 이 경우 발급자의 CN은 RunIT.Cloud CA Root Certificate 이며 서버 인증서의 CN은 *.in.runit.cloud 입니다.