보안 소켓 계층(SSL) 클래스
아래 클래스는 암호화 및 프로토콜 처리를 수행하기 위해 네이티브 TLS 백엔드, OpenSSL 툴킷 또는 적절한 TLS 플러그인을 사용하여 보안 소켓 계층(SSL) 프로토콜을 사용하는 보안 네트워크 통신을 지원합니다.
Qt 버전 5.15 이상부터 OpenSSL에 공식적으로 지원되는 버전은 1.1.1 이상입니다.
Qt 버전 5.15.1 이상은 OpenSSL 3과도 호환됩니다.
이 클래스는 UDP 소켓에 대한 암호화를 제공합니다. | |
이 클래스는 서버 측 DTLS 쿠키 생성 및 확인을 구현합니다. | |
이 클래스는 DTLS 쿠키 생성기의 파라미터를 정의합니다. | |
이 클래스는 온라인 인증서 상태 프로토콜 응답을 나타냅니다. | |
모든 SSL 클래스에 공통적인 열거형을 선언합니다. Qt Network | |
X509 인증서를 위한 편리한 API | |
X509 인증서의 확장에 액세스하기 위한 API입니다. | |
SSL 암호화 암호를 나타냅니다. | |
SSL 연결의 구성 및 상태 보유 | |
서버용 Diffie-Hellman 파라미터를 위한 인터페이스 | |
타원 곡선 암호 알고리즘에서 사용하기 위한 타원 곡선을 나타냅니다. | |
SSL 오류 | |
비공개 및 공개 키용 인터페이스 | |
PSK(사전 공유 키) 암호 제품군에 대한 인증 데이터 | |
TLS를 통해 암호화된 보안 TCP 서버 구현 | |
클라이언트와 서버 모두를 위한 SSL 암호화 소켓 | |
알림 메시지의 수준을 설명합니다. | |
알림 메시지에 포함될 수 있는 가능한 코드를 열거합니다. | |
DTLS 핸드셰이크의 현재 상태를 설명합니다. | |
TLS 백엔드가 구현하는 클래스를 열거합니다. | |
QDtls 및 QDtlsClientVerifier에서 발견할 수 있는 오류를 설명합니다. | |
온라인 인증서 상태를 설명합니다. | |
해지 이유를 설명합니다. | |
TLS 백엔드에서 지원하는 가능한 기능을 열거합니다. |
Android 애플리케이션의 경우 Android에 대한 OpenSSL 지원 추가하기를 참조하세요.
소스에서 Qt 빌드 시 SSL 지원 활성화 및 비활성화하기
소스에서 Qt를 빌드할 때, Qt는 빌드하는 운영 체제에서 지원되는 네이티브 TLS 라이브러리용 플러그인을 빌드합니다. Windows의 경우 이는 Schannel을 의미하며, macOS의 경우 보안 전송을 의미합니다.
모든 플랫폼에서 구성 시스템은 OpenSSL의 소스 또는 개발자 패키지에서 제공하는 openssl/opensslv.h
헤더의 존재 여부를 확인합니다. 이 헤더가 발견되면 Qt용 OpenSSL 백엔드를 활성화하고 빌드합니다.
기본적으로 OpenSSL이 활성화된 Qt 라이브러리는 런타임에 설치된 모든 OpenSSL 라이브러리를 동적으로 로드합니다. 그러나 컴파일 타임에 -openssl-linked
옵션을 사용하여 Qt를 구성하면 라이브러리에 대해 링크할 수 있습니다.
OpenSSL에 대해 링크된 Qt 버전을 빌드할 때, Qt의 빌드 시스템은 CMake의 FindOpenSSL
명령을 사용하여 여러 표준 위치에서 OpenSSL을 찾습니다. 특정 위치를 강제로 찾도록 CMake 변수 OPENSSL_ROOT_DIR을 설정할 수 있습니다.
예를 들어
configure -openssl-linked -- -D OPENSSL_ROOT_DIR=<openssl_dir>
Qt 빌드에서 SSL 지원을 비활성화하려면 -no-openssl
옵션을 사용하여 Qt를 구성합니다.
애플리케이션 패키징 시 고려 사항
애플리케이션을 패키징할 때 windeployqt와 같은 도구를 실행하면 사용하는 라이브러리의 모든 플러그인을 plugins/
폴더에 복사할 수 있습니다. 그러나 TLS의 경우 백엔드 하나만 필요하며 애플리케이션을 패키징하기 전에 다른 플러그인을 삭제할 수 있습니다. 예를 들어, Windows를 사용 중이고 OpenSSL 백엔드에서 제공하는 추가 기능이 필요하지 않은 경우 qopensslbackend
플러그인과 OpenSSL 라이브러리를 패키징하지 않고 qschannelbackend
플러그인만 패키징하도록 선택할 수 있습니다.
그러나 여러 백엔드를 배포하는 것은 문제가 되지 않습니다. Qt는 하나의 백엔드가 성공적으로 로드될 때까지 순서대로 (OpenSSL이 먼저 시도된 상태에서) 백엔드를 로드하려고 시도합니다. 그러면 다른 백엔드는 사용되지 않습니다.
데이터그램 전송 계층 보안
DTLS(데이터그램 전송 계층 보안)는 데이터그램 기반 애플리케이션에 보안을 제공하여 도청, 변조 또는 메시지 위조로부터 보호할 수 있는 프로토콜입니다. DTLS 프로토콜은 스트림 지향의 TLS(전송 계층 보안) 프로토콜을 기반으로 합니다. QtNetwork 에서는 RFC 6347에 정의된 사용자 데이터그램 프로토콜(UDP)과 함께 DTLS를 사용할 수 있습니다.
가져오기 및 내보내기 제한
Qt 바이너리 설치 프로그램에는 QtNetwork 에서 사용하는 OpenSSL 라이브러리가 포함되어 있습니다. 그러나 이 라이브러리는 Qt로 빌드된 애플리케이션과 함께 자동으로 배포되지는 않습니다. 일부 유형의 소프트웨어와 일부 지역에는 가져오기 및 내보내기 제한이 적용됩니다. 배포된 애플리케이션에서 SSL 통신을 사용하려는 개발자는 사용자가 적절한 라이브러리를 설치했는지 확인하거나 적절한 자격을 갖춘 법률 전문가와 상의하여 OpenSSL 프로젝트의 코드를 사용하는 애플리케이션이 전 세계 관련 지역에서 가져오기 및 내보내기 인증을 올바르게 받았는지 확인해야 합니다.
© 2025 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.