ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OpenSSL을 사용한 TLS 1.2 연결 확인 방법
    IT/WEBWAS 2024. 8. 13. 23:18
    반응형

    인터넷 통신에서 데이터 보호와 보안성을 제공하기 위해 널리 사용되는 OpenSSL을 통해 TLS 1.2가 적용된 통신을 확인하는 방법이 있습니다. 

     

    1. OpenSSL을 사용하여 서버에 연결 테스트

    openssl s_client 명령어를 사용하면 서버와의 TLS 연결을 테스트할 수 있습니다. 이 명령어를 통해 SSL/TLS 연결의 세부 정보를 확인할 수 있습니다. 다음은 서버와 연결을 시도하는 명령어입니다

    openssl s_client -connect <서버 주소>:<포트> -tls1_2

     

    예를 들어, example.com 웹사이트의 443 포트로 TLS 1.2를 사용하여 연결을 시도하려면 다음과 같습니다

    openssl s_client -connect example.com:443 -tls1_2

     

     

    2. 서버의 TLS 버전 및 연결 세부 정보 확인

    서버와의 연결 후, SSL/TLS 연결의 세부 정보가 출력됩니다. 주요 정보를 하나씩 살펴보겠습니다.

     

    2.1. 서버 인증서 확인

    연결이 성립되면 서버 인증서와 인증서 체인을 볼 수 있습니다. 이는 다음과 같이 출력됩니다.

    Certificate chain
     0 s:CN = example.com
       i:C = US, O = Let's Encrypt, CN = R3
     1 s:C = US, O = Let's Encrypt, CN = R3
       i:O = Digital Signature Trust Co., CN = DST Root CA X3

     

    • s:는 서브젝트(subject)를 나타내며, 이는 인증서가 발급된 대상의 정보를 나타냅니다.
    • i:는 발급자(issuer)를 나타내며, 이는 인증서를 발급한 기관의 정보를 나타냅니다.

    2.2. 서버 인증서 정보

    서버 인증서의 상세 정보는 다음과 같이 표시됩니다.

    Server certificate
    -----BEGIN CERTIFICATE-----
    MIIF...
    -----END CERTIFICATE-----
    subject=CN = example.com
    issuer=C = US, O = Let's Encrypt, CN = R3

     

    이 부분에서는 인증서의 서브젝트와 발급자 정보, 인증서의 PEM 형식이 포함됩니다.

     

    2.3. SSL/TLS 연결 세부 정보

    연결된 SSL/TLS 세션의 정보는 다음과 같이 표시됩니다.

    SSL handshake has read 3289 bytes and written 454 bytes
    ---
    New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
    Server public key is 2048 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : ECDHE-RSA-AES256-GCM-SHA384
        Session-ID: 85D2...
        Session-ID-ctx:
        Master-Key: 43B...
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1615371084
        Timeout   : 300 (sec)
        Verify return code: 0 (ok)
    ---

    주요 항목은 다음과 같습니다.

    • Protocol: 사용된 TLS 버전 (TLSv1.2)
    • Cipher: 사용된 암호화 방식 (ECDHE-RSA-AES256-GCM-SHA384)
    • Session-ID: 세션의 고유 ID
    • Master-Key: 세션을 보호하기 위해 사용되는 주요 암호화 키
    • Server public key: 서버의 공개 키 정보 (2048비트)
    • Secure Renegotiation: 안전한 재협상 지원 여부
    • Compression: 압축 방식 (NONE)
    • Verify return code: 인증서 검증 결과 (0은 성공)

    2.4. 추가 정보 확인

    연결 세부 정보 외에도 다음과 같은 정보를 확인할 수 있습니다.

    • 서버의 암호화 지원 상태: 서버가 지원하는 암호화 방식 및 프로토콜 버전
    • 인증서 체인: 서버 인증서와 루트 인증서까지의 체인
    • 인증서 유효 기간: 인증서의 발급일과 만료일
    • 주체 정보: 인증서의 주체(서버)의 상세 정보 (도메인, 조직, 위치 등)

    예시

    실제 openssl s_client 명령어 실행 예시는 다음과 같습니다.

    openssl s_client -connect example.com:443 -tls1_2

     

    출력 예시:

    CONNECTED(00000003)
    depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
    verify return:1
    depth=1 C = US, O = Let's Encrypt, CN = R3
    verify return:1
    depth=0 CN = example.com
    verify return:1
    ---
    Certificate chain
     0 s:CN = example.com
       i:C = US, O = Let's Encrypt, CN = R3
     1 s:C = US, O = Let's Encrypt, CN = R3
       i:O = Digital Signature Trust Co., CN = DST Root CA X3
    ---
    Server certificate
    -----BEGIN CERTIFICATE-----
    MIIF...
    -----END CERTIFICATE-----
    subject=CN = example.com
    issuer=C = US, O = Let's Encrypt, CN = R3
    ---
    No client certificate CA names sent
    Peer signing digest: SHA256
    Peer signature type: RSA
    Server Temp Key: ECDH, P-256, 256 bits
    ---
    SSL handshake has read 3289 bytes and written 454 bytes
    ---
    New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
    Server public key is 2048 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : ECDHE-RSA-AES256-GCM-SHA384
        Session-ID: 85D2...
        Session-ID-ctx:
        Master-Key: 43B...
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1615371084
        Timeout   : 300 (sec)
        Verify return code: 0 (ok)
    ---

     

    위 정보를 통해 서버가 TLS 1.2를 사용하고 있는지, 어떤 암호화 방식과 공개 키를 사용하는지, 인증서가 유효한지 등을 확인할 수 있습니다.

     

    결론

    위와 같이, OpenSSL을 활용하면 서버와의 TLS 연결을 쉽게 확인할 수 있으며 이를 통해 보안성을 더욱 강화할 수 있습니다.

     아마도 가장 쉽게 SSL 통신을 확인하는 방법이니, 잘 활용해 보시기 바랍니다.

    반응형
Designed by Tistory.