SSL(Secure Sockets Layer) 클래스
아래 클래스들은 네이티브 TLS 백엔드, OpenSSL 툴킷 또는 적절한 TLS 플러그인을 사용하여 암호화 및 프로토콜 처리를 수행함으로써, SSL(Secure Sockets Layer) 프로토콜을 이용한 보안 네트워크 통신을 지원합니다.
이 클래스는 UDP 소켓에 대한 암호화 기능을 제공합니다 | |
이 클래스는 서버 측 DTLS 쿠키 생성 및 검증을 구현합니다 | |
이 클래스는 DTLS 쿠키 생성기의 매개변수를 정의합니다 | |
이 클래스는 온라인 인증서 상태 프로토콜(OCSP) 응답을 나타냅니다 | |
다음에 있는 모든 SSL 클래스에 공통적으로 사용되는 열거형을 선언합니다. Qt Network | |
X509 인증서를 위한 편리한 API | |
X.509 인증서의 확장 정보에 접근하기 위한 API | |
SSL 암호화 알고리즘을 나타냅니다. | |
SSL 연결의 구성 및 상태를 보관합니다 | |
서버용 디피-헬만(Diffie-Hellman) 매개변수를 위한 인터페이스 | |
타원 곡선 암호 알고리즘에서 사용되는 타원 곡선을 나타냅니다 | |
SSL 오류 | |
개인 키 및 공개 키를 위한 인터페이스 | |
TLS 세션에서 파생된 내보낸 키 자료를 설명합니다 | |
사전 공유 키(PSK) 암호 모음에 대한 인증 데이터 | |
TLS를 통해 암호화되고 보안이 보장된 TCP 서버를 구현합니다 | |
클라이언트 및 서버 모두를 위한 SSL 암호화 소켓 | |
경고 메시지의 수준을 설명합니다 | |
경고 메시지가 가질 수 있는 가능한 코드를 열거합니다 | |
DTLS 핸드셰이크의 현재 상태를 설명합니다 | |
TLS 백엔드가 구현하는 클래스를 열거합니다 | |
QDtls 및 QDtlsClientVerifier에서 감지할 수 있는 오류를 설명합니다 | |
온라인 인증서 상태를 설명합니다 | |
취소 사유를 설명합니다 | |
TLS 백엔드가 지원하는 가능한 기능을 열거합니다 |
Android 애플리케이션의 경우 ‘Android용 OpenSSL 지원 추가’를 참조하십시오.
네트워크 연결 애플리케이션에서 암호화 사용
가능한 한 모든 네트워크에서 데이터를 전송할 때 암호화를 사용하십시오. 쉽게 읽을 수 있는 암호화되지 않은 데이터인 평문은 사용자 정보 및 네트워크 시스템 정보와 같은 민감한 데이터를 노출시킵니다.
QSslSocket::connectToHostEncrypted()를 사용하여 암호화를 통해 연결하고, QSslSocket::sslHandshakeErrors()를 사용하여 SSL 문제를 확인하십시오. QSslSocket::ignoreSslErrors()는 애플리케이션에 보안 위험을 초래할 수 있으므로 주의해서 사용하십시오.
QSslConfiguration 를 사용하여 강력한 보안 설정을 적용하십시오. 지원되는 프로토콜은 SSL 백엔드에 따라 다르며, 프로토콜의 위험 수준은 향후 변경될 수 있습니다. QSslConfiguration::setProtocol()를 사용하여 더 새롭고 안전한 프로토콜을 사용할 수 있습니다. 자세한 내용은 QSsl::SslProtocol 에서 사용 가능한 프로토콜을 참조하십시오.
소스 코드에서 Qt를 빌드할 때 SSL 지원 활성화 및 비활성화
소스 코드에서 Qt를 빌드할 때, Qt는 빌드 대상 운영 체제에서 지원되는 네이티브 TLS 라이브러리를 위한 플러그인을 생성합니다. Windows의 경우 Schannel을, macOS의 경우 Secure Transport를 의미합니다.
모든 플랫폼에서 구성 시스템은 OpenSSL의 소스 또는 개발자 패키지에서 제공하는 ` openssl/opensslv.h ` 헤더의 존재 여부를 확인합니다. 해당 헤더가 발견되면 Qt용 OpenSSL 백엔드를 활성화하고 빌드합니다.
참고: 소스 코드에서 빌드할 경우 Qt는 구버전인 OpenSSL 1.1.1도 여전히 지원할 수 있지만 , Qt Online Installer 실행 시 OpenSSL 3을 필수로 요구합니다.
기본적으로 OpenSSL이 활성화된 Qt 라이브러리는 실행 시 설치된 OpenSSL 라이브러리를 동적으로 로드합니다. 그러나 Qt를 -openssl-linked 옵션으로 구성하면 컴파일 시점에 해당 라이브러리에 링크할 수도 있습니다.
OpenSSL과 링크된 Qt 버전을 빌드할 때, Qt의 빌드 시스템은 CMake의 ` FindOpenSSL ` 명령을 사용하여 여러 표준 위치에서 OpenSSL을 찾습니다. CMake 변수 `OPENSSL_ROOT_DIR`을 설정하여 특정 위치를 강제 지정할 수 있습니다.
예를 들어:
configure -openssl-linked -- -D OPENSSL_ROOT_DIR=<openssl_dir>Qt 빌드에서 SSL 지원을 비활성화하려면, Qt를 -no-openssl 옵션으로 구성하십시오.
애플리케이션 패키징 시 고려 사항
애플리케이션을 패키징할 때 windeployqt와 같은 도구를 실행할 수 있습니다. 이 도구는 사용 중인 라이브러리의 모든 플러그인을 plugins/ 폴더로 복사합니다. 하지만 TLS의 경우 백엔드는 하나만 필요하므로, 애플리케이션을 패키징하기 전에 나머지 플러그인을 삭제해도 됩니다. 예를 들어, Windows 환경에서 OpenSSL 백엔드가 제공하는 추가 기능이 전혀 필요하지 않은 경우, qopensslbackend 플러그인과 OpenSSL 라이브러리를 포함하지 않고 qschannelbackend 플러그인만 포함하도록 선택할 수 있습니다.
하지만 여러 백엔드를 포함하는 것은 문제가 되지 않습니다. Qt는 백엔드 중 하나가 성공적으로 로드될 때까지 순서대로(OpenSSL을 먼저 시도하며) 백엔드를 로드하려고 시도합니다. 다른 백엔드들은 사용되지 않습니다.
데이터그램 전송 계층 보안
데이터그램 전송 계층 보안(DTLS)은 데이터그램 기반 애플리케이션에 보안을 제공하여 도청, 변조 또는 메시지 위조로부터 보호하는 프로토콜입니다. DTLS 프로토콜은 스트림 지향형 TLS(Transport Layer Security) 프로토콜을 기반으로 합니다. QtNetwork 는 RFC 6347에 정의된 대로 UDP(User Datagram Protocol)와 함께 DTLS를 사용할 수 있게 해줍니다.
수입 및 수출 제한
일부 유형의 소프트웨어와 세계의 일부 지역에는 수입 및 수출 제한이 적용됩니다. 배포된 애플리케이션에서 SSL 통신을 사용하고자 하는 개발자는 사용자가 적절한 라이브러리를 설치했는지 확인하거나, OpenSSL 프로젝트의 코드를 사용하는 애플리케이션이 해당 지역의 수입 및 수출에 대해 올바르게 인증되었는지 확인하기 위해 적절한 자격을 갖춘 법률 전문가와 상담해야 합니다.
자세한 내용은 Qt 프레임워크 및 도구의 수출 통제를 참조하십시오.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.