QSslConfiguration Class
QSslConfiguration 클래스는 SSL 연결의 구성과 상태를 보관합니다. 더 보기...
헤더: | #include <QSslConfiguration> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
- 상속된 멤버를 포함한 모든 멤버 목록
- QSslConfiguration은 네트워크 프로그래밍 API 및 암시적으로 공유되는 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입됩니다.
공용 유형
enum | NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported } |
공용 함수
QSslConfiguration() | |
QSslConfiguration(const QSslConfiguration &other) | |
~QSslConfiguration() | |
void | addCaCertificate(const QSslCertificate &certificate) |
void | addCaCertificates(const QList<QSslCertificate> &certificates) |
bool | addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString) |
QList<QByteArray> | allowedNextProtocols() const |
QMap<QByteArray, QVariant> | backendConfiguration() const |
QList<QSslCertificate> | caCertificates() const |
QList<QSslCipher> | ciphers() const |
QSslDiffieHellmanParameters | diffieHellmanParameters() const |
bool | dtlsCookieVerificationEnabled() const |
QList<QSslEllipticCurve> | ellipticCurves() const |
QSslKey | ephemeralServerKey() const |
(since 6.0) bool | handshakeMustInterruptOnError() const |
bool | isNull() const |
QSslCertificate | localCertificate() const |
QList<QSslCertificate> | localCertificateChain() const |
(since 6.0) bool | missingCertificateIsFatal() const |
QByteArray | nextNegotiatedProtocol() const |
QSslConfiguration::NextProtocolNegotiationStatus | nextProtocolNegotiationStatus() const |
bool | ocspStaplingEnabled() const |
QSslCertificate | peerCertificate() const |
QList<QSslCertificate> | peerCertificateChain() const |
int | peerVerifyDepth() const |
QSslSocket::PeerVerifyMode | peerVerifyMode() const |
QByteArray | preSharedKeyIdentityHint() const |
QSslKey | privateKey() const |
QSsl::SslProtocol | protocol() const |
QSslCipher | sessionCipher() const |
QSsl::SslProtocol | sessionProtocol() const |
QByteArray | sessionTicket() const |
int | sessionTicketLifeTimeHint() const |
void | setAllowedNextProtocols(const QList<QByteArray> &protocols) |
void | setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>()) |
void | setBackendConfigurationOption(const QByteArray &name, const QVariant &value) |
void | setCaCertificates(const QList<QSslCertificate> &certificates) |
void | setCiphers(const QList<QSslCipher> &ciphers) |
(since 6.0) void | setCiphers(const QString &ciphers) |
void | setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams) |
void | setDtlsCookieVerificationEnabled(bool enable) |
void | setEllipticCurves(const QList<QSslEllipticCurve> &curves) |
(since 6.0) void | setHandshakeMustInterruptOnError(bool interrupt) |
void | setLocalCertificate(const QSslCertificate &certificate) |
void | setLocalCertificateChain(const QList<QSslCertificate> &localChain) |
(since 6.0) void | setMissingCertificateIsFatal(bool cannotRecover) |
void | setOcspStaplingEnabled(bool enabled) |
void | setPeerVerifyDepth(int depth) |
void | setPeerVerifyMode(QSslSocket::PeerVerifyMode mode) |
void | setPreSharedKeyIdentityHint(const QByteArray &hint) |
void | setPrivateKey(const QSslKey &key) |
void | setProtocol(QSsl::SslProtocol protocol) |
void | setSessionTicket(const QByteArray &sessionTicket) |
void | setSslOption(QSsl::SslOption option, bool on) |
void | swap(QSslConfiguration &other) |
bool | testSslOption(QSsl::SslOption option) const |
bool | operator!=(const QSslConfiguration &other) const |
QSslConfiguration & | operator=(const QSslConfiguration &other) |
bool | operator==(const QSslConfiguration &other) const |
정적 공용 멤버
const char[] | ALPNProtocolHTTP2 |
const char[] | NextProtocolHttp1_1 |
QSslConfiguration | defaultConfiguration() |
QSslConfiguration | defaultDtlsConfiguration() |
void | setDefaultConfiguration(const QSslConfiguration &configuration) |
void | setDefaultDtlsConfiguration(const QSslConfiguration &configuration) |
QList<QSslCipher> | supportedCiphers() |
QList<QSslEllipticCurve> | supportedEllipticCurves() |
QList<QSslCertificate> | systemCaCertificates() |
상세 설명
QSslConfiguration는 Qt 네트워킹 클래스에서 개방형 SSL 연결에 대한 정보를 전달하고 어플리케이션이 해당 연결의 특정 기능을 제어할 수 있도록 하는 데 사용됩니다.
QSslConfiguration이 현재 지원하는 설정은 다음과 같습니다:
- 사용할 SSL/TLS 프로토콜
- 연결 중 상대방에게 제공할 인증서 및 관련 개인 키
- 연결을 암호화하는 데 사용할 수 있는 암호
- 피어 인증서의 유효성을 검사하는 데 사용되는 인증 기관 인증서 목록
이러한 설정은 연결 핸드셰이크 중에만 적용됩니다. 연결이 설정된 후에 설정하면 효과가 없습니다.
QSslConfiguration이 지원하는 상태는 다음과 같습니다:
- 핸드셰이크 중에 상대방이 제시한 인증서 및 CA 인증서로 이어지는 체인
- 이 세션을 암호화하는 데 사용된 암호
이 상태는 SSL 연결이 시작된 후에만 얻을 수 있지만, 반드시 연결이 완료되기 전에 얻을 수 있는 것은 아닙니다. 일부 설정은 SSL 연결이 진행되는 동안 다시 시작할 필요 없이 변경될 수 있습니다(예: 시간이 지남에 따라 암호가 변경될 수 있음).
QSslConfiguration 개체의 상태는 변경할 수 없습니다.
QSslConfiguration은 QSslSocket 및 네트워크 액세스 API와 함께 사용할 수 있습니다.
QSslConfiguration에서 설정을 변경하는 것만으로는 관련 SSL 연결의 설정을 변경할 수 없다는 점에 유의하세요. 이를 위해서는 수정된 QSslConfiguration 객체에서 setSslConfiguration을 호출해야 합니다. 다음 예시는 QSslSocket 객체에서 프로토콜을 TLSv1_2로 변경하는 방법을 보여줍니다:
QSslConfiguration config = sslSocket.sslConfiguration(); config.setProtocol(QSsl::TlsV1_2); sslSocket.setSslConfiguration(config);
QSsl::SslProtocol, QSslCertificate, QSslCipher, QSslKey, QSslSocket, QNetworkAccessManager, QSslSocket::sslConfiguration() 및 QSslSocket::setSslConfiguration()도 참조하세요 .
멤버 유형 문서
enum QSslConfiguration::NextProtocolNegotiationStatus
다음 프로토콜 협상(NPN) 또는 애플리케이션 계층 프로토콜 협상(ALPN)의 상태를 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QSslConfiguration::NextProtocolNegotiationNone | 0 | 아직 협상된 애플리케이션 프로토콜이 없습니다. |
QSslConfiguration::NextProtocolNegotiationNegotiated | 1 | 다음 프로토콜이 협상되었습니다( nextNegotiatedProtocol() 참조). |
QSslConfiguration::NextProtocolNegotiationUnsupported | 2 | 클라이언트와 서버가 공통의 다음 애플리케이션 프로토콜에 합의하지 못했습니다. |
멤버 함수 문서
QSslConfiguration::QSslConfiguration()
빈 SSL 구성을 생성합니다. 이 구성에는 유효한 설정이 없으며 상태는 비어 있습니다. isNull()는 이 생성자가 호출된 후 참을 반환합니다.
설정자 메서드가 호출되면 isNull()는 false를 반환합니다.
QSslConfiguration::QSslConfiguration(const QSslConfiguration &other)
other 의 구성 및 상태를 복사합니다. other 이 null이면 이 개체도 null이 됩니다.
[noexcept]
QSslConfiguration::~QSslConfiguration()
QSslConfiguration 에서 보유한 모든 리소스를 공개합니다.
void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)
이 구성의 CA 인증서 데이터베이스에 certificate 를 추가합니다. 인증서 데이터베이스는 SSL 핸드셰이크 전에 설정해야 합니다. CA 인증서 데이터베이스는 핸드셰이크 단계에서 소켓에서 상대방의 인증서를 검증하는 데 사용됩니다.
참고: 기본 구성은 시스템 CA 인증서 데이터베이스를 사용합니다. 이를 사용할 수 없는 경우(일반적으로 iOS의 경우처럼) 기본 데이터베이스는 비어 있습니다.
caCertificates(), setCaCertificates() 및 addCaCertificates()도 참조하세요 .
void QSslConfiguration::addCaCertificates(const QList<QSslCertificate> &certificates)
이 구성의 CA 인증서 데이터베이스에 certificates 를 추가합니다. 인증서 데이터베이스는 SSL 핸드셰이크 전에 설정해야 합니다. CA 인증서 데이터베이스는 핸드셰이크 단계에서 소켓에서 상대방의 인증서를 검증하는 데 사용됩니다.
참고: 기본 구성은 시스템 CA 인증서 데이터베이스를 사용합니다. 이를 사용할 수 없는 경우(일반적으로 iOS의 경우처럼) 기본 데이터베이스는 비어 있습니다.
caCertificates(), setCaCertificates() 및 addCaCertificate()도 참조하세요 .
bool QSslConfiguration::addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString)
path 의 모든 파일에서 지정된 format 으로 인코딩된 인증서를 검색하여 이 소켓의 CA 인증서 데이터베이스에 추가합니다. path 은 syntax 에 지정된 대로 하나 이상의 파일과 일치하는 파일 또는 패턴이어야 합니다. 하나 이상의 인증서가 소켓의 CA 인증서 데이터베이스에 추가되면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
CA 인증서 데이터베이스는 핸드셰이크 단계에서 소켓이 상대방의 인증서를 검증하는 데 사용됩니다.
보다 정밀하게 제어하려면 addCaCertificate()를 사용합니다.
addCaCertificate() 및 QSslCertificate::fromPath()도 참조하세요 .
QList<QByteArray> QSslConfiguration::allowedNextProtocols() const
이 함수는 setAllowedNextProtocols()에 설정된 대로 다음 프로토콜 협상(NPN) 또는 애플리케이션 계층 프로토콜 협상(ALPN) TLS 확장을 통해 서버와 협상할 수 있는 허용 프로토콜을 반환합니다.
nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), setAllowedNextProtocols() 및 QSslConfiguration::NextProtocolHttp1_1도 참조하세요 .
QMap<QByteArray, QVariant> QSslConfiguration::backendConfiguration() const
백엔드별 구성을 반환합니다.
setBackendConfigurationOption() 또는 setBackendConfiguration()에서 설정한 옵션만 반환됩니다. 백엔드의 내부 표준 구성은 보고되지 않습니다.
setBackendConfigurationOption() 및 setBackendConfiguration()도 참조하세요 .
QList<QSslCertificate> QSslConfiguration::caCertificates() const
이 연결의 CA 인증서 데이터베이스를 반환합니다. CA 인증서 데이터베이스는 핸드셰이크 단계에서 소켓이 상대방의 인증서를 검증하는 데 사용됩니다. 핸드셰이크 전에 setCaCertificates() 또는 addCaCertificate() 및 addCaCertificates()를 사용하여 수정할 수 있습니다.
setCaCertificates(), addCaCertificate() 및 addCaCertificates()도 참조하세요 .
QList<QSslCipher> QSslConfiguration::ciphers() const
이 연결의 현재 암호화 암호 집합을 반환합니다. 이 목록은 핸드셰이크 단계에서 세션 암호를 선택하는 데 사용됩니다. 반환된 암호 목록은 내림차순 기본 설정에 따라 정렬됩니다. (즉, 목록의 첫 번째 암호가 가장 선호되는 암호입니다.) 세션 암호는 목록에서 피어에서도 지원되는 첫 번째 암호가 됩니다.
기본적으로 핸드셰이크 단계에서는 이 시스템의 SSL 라이브러리에서 지원하는 모든 암호를 선택할 수 있으며, 이는 시스템마다 다를 수 있습니다. 이 시스템의 SSL 라이브러리에서 지원하는 암호 목록은 supportedCiphers()에서 반환합니다. 지원되는 암호의 하위 집합으로 setCiphers()를 호출하여 이 소켓의 세션 암호를 선택하는 데 사용되는 암호 목록을 제한할 수 있습니다. supportedCiphers ()에서 반환한 목록으로 setCiphers()를 호출하여 전체 집합을 사용하도록 되돌릴 수 있습니다.
setCiphers() 및 supportedCiphers()도 참조하세요 .
[static]
QSslConfiguration QSslConfiguration::defaultConfiguration()
새 SSL 연결에 사용할 기본 SSL 구성을 반환합니다.
기본 SSL 구성은 다음과 같이 구성됩니다:
- 로컬 인증서 및 개인 키 없음
- 프로토콜 SecureProtocols
- 시스템의 기본 CA 인증서 목록
- 128비트 이상의 SSL 라이브러리에서 지원되는 SSL 암호 목록과 동일한 암호 목록
supportedCiphers() 및 setDefaultConfiguration()도 참조하세요 .
[static]
QSslConfiguration QSslConfiguration::defaultDtlsConfiguration()
새 DTLS 연결에 사용할 기본 DTLS 구성을 반환합니다.
기본 DTLS 구성은 다음과 같이 구성됩니다:
- 로컬 인증서 및 개인 키 없음
- 프로토콜 DtlsV1_2OrLater
- 시스템의 기본 CA 인증서 목록
- 암호에 128비트 이상의 비밀 비트를 사용하는 SSL 라이브러리에서 지원되는 TLS 1.2 암호 목록과 동일한 암호 목록.
setDefaultDtlsConfiguration()도 참조하세요 .
QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const
현재 Diffie-Hellman 매개변수 집합을 검색합니다.
Diffie-Hellman 파라미터가 설정되지 않은 경우 QSslConfiguration 객체는 기본적으로 RFC 3526의 2048비트 MODP 그룹을 사용합니다.
참고: 기본 파라미터는 향후 Qt 버전에서 변경될 수 있습니다. 해당 버전이 어떤 기본값을 사용하는지 확인하려면 사용 중인 정확한 Qt 버전의 설명서를 확인하세요.
setDiffieHellmanParameters()도 참조하세요 .
bool QSslConfiguration::dtlsCookieVerificationEnabled() const
이 함수는 서버 측 소켓에서 DTLS 쿠키 확인이 활성화된 경우 true를 반환합니다.
setDtlsCookieVerificationEnabled()도 참조하세요 .
QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const
이 연결의 현재 타원 곡선 목록을 반환합니다. 이 목록은 타원 커브를 선택하기 위한 핸드셰이크 단계에서 사용됩니다(타원 커브 암호를 사용하는 경우). 반환된 커브 목록은 선호도가 내림차순으로 정렬됩니다(즉, 목록의 첫 번째 커브가 가장 선호도가 높은 커브입니다).
기본적으로 핸드셰이크 단계에서는 이 시스템의 SSL 라이브러리에서 지원하는 커브를 선택할 수 있으며, 시스템마다 다를 수 있습니다. 이 시스템의 SSL 라이브러리에서 지원하는 커브 목록은 QSslSocket::supportedEllipticCurves()에서 반환됩니다.
지원되는 암호의 하위 집합으로 setEllipticCurves()를 호출하여 이 소켓의 세션 암호를 선택하는 데 사용되는 곡선 목록을 제한할 수 있습니다. QSslSocket::supportedEllipticCurves()에서 반환된 목록으로 setEllipticCurves()를 호출하여 전체 집합을 사용하도록 되돌릴 수 있습니다.
setEllipticCurves 를참조하세요 .
QSslKey QSslConfiguration::ephemeralServerKey() const
순방향 비밀성을 가진 암호 알고리즘에 사용되는 임시 서버 키(예: DHE-RSA-AES128-SHA)를 반환합니다.
임시 키는 클라이언트 모드에서 실행할 때만 사용할 수 있습니다(예: QSslSocket::SslClientMode). 서버 모드에서 실행하거나 순방향 비밀성이 없는 암호 알고리즘을 사용하는 경우 null 키가 반환됩니다. 임시 서버 키는 encrypted() 신호를 전송하기 전에 설정됩니다.
[since 6.0]
bool QSslConfiguration::handshakeMustInterruptOnError() const
핸드셰이크가 끝나기 전에 확인 콜백이 QSslSocket::handshakeInterruptedOnError()를 조기에 반환하면 true를 반환합니다.
참고: 이 함수는 OpenSSL을 제외한 모든 백엔드에 대해 항상 false를 반환합니다.
이 함수는 Qt 6.0에 도입되었습니다.
setHandshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError() 및 QSslSocket::continueInterruptedHandshake()도 참조하세요 .
bool QSslConfiguration::isNull() const
null QSslConfiguration 객체인 경우 true
을 반환합니다.
QSslConfiguration 객체가 기본 구성되고 설정자 메서드가 호출되지 않은 경우 null입니다.
setProtocol(), setLocalCertificate(), setPrivateKey(), setCiphers() 및 setCaCertificates()도 참조하세요 .
QSslCertificate QSslConfiguration::localCertificate() const
SSL 핸드셰이크 프로세스 중에 상대방에게 제시할 인증서를 반환합니다.
setLocalCertificate()도 참조하세요 .
QList<QSslCertificate> QSslConfiguration::localCertificateChain() const
SSL 핸드셰이크 프로세스 중에 상대방에게 제공할 인증서 체인을 반환합니다.
setLocalCertificateChain() 및 localCertificate()도 참조하세요 .
[since 6.0]
bool QSslConfiguration::missingCertificateIsFatal() const
QSslError::NoPeerCertificate 코드의 오류를 무시할 수 없는 경우 true를 반환합니다.
참고: OpenSSL을 제외한 모든 TLS 백엔드에 대해 항상 false를 반환합니다.
이 함수는 Qt 6.0에 도입되었습니다.
QSslSocket::ignoreSslErrors() 및 setMissingCertificateIsFatal()도 참조하세요 .
QByteArray QSslConfiguration::nextNegotiatedProtocol() const
이 함수는 다음 프로토콜 협상(NPN) 또는 애플리케이션 계층 프로토콜 협상(ALPN) TLS 확장이 활성화된 경우 서버와 협상된 프로토콜을 반환합니다. NPN/ALPN 확장을 사용하려면 서버에 연결하기 전에 setAllowedNextProtocols()를 명시적으로 호출해야 합니다.
프로토콜을 협상할 수 없거나 확장이 활성화되지 않은 경우 이 함수는 null인 QByteArray 을 반환합니다.
setAllowedNextProtocols() 및 nextProtocolNegotiationStatus()도 참조하세요 .
QSslConfiguration::NextProtocolNegotiationStatus QSslConfiguration::nextProtocolNegotiationStatus() const
이 함수는 다음 프로토콜 협상(NPN) 또는 애플리케이션 계층 프로토콜 협상(ALPN)의 상태를 반환합니다. setAllowedNextProtocols ()를 통해 기능이 활성화되지 않은 경우 이 함수는 NextProtocolNegotiationNone 을 반환합니다. 상태는 encrypted() 신호를 전송하기 전에 설정됩니다.
setAllowedNextProtocols(), allowedNextProtocols(), nextNegotiatedProtocol() 및 QSslConfiguration::NextProtocolNegotiationStatus도 참조하세요 .
bool QSslConfiguration::ocspStaplingEnabled() const
setOCSPStaplingEnabled()를 통해 OCSP 스테이플링이 활성화된 경우 true를 반환하고, 그렇지 않으면 기본값인 false를 반환합니다.
setOcspStaplingEnabled()도 참조하세요 .
QSslCertificate QSslConfiguration::peerCertificate() const
피어의 디지털 인증서(즉, 연결된 호스트의 바로 인증서)를 반환하거나, 피어가 인증서를 할당하지 않은 경우 null 인증서를 반환합니다.
피어 인증서는 핸드셰이크 단계에서 자동으로 확인되므로 이 기능은 일반적으로 표시용 또는 연결 진단 목적으로 인증서를 가져오는 데 사용됩니다. 여기에는 호스트 이름, 인증서 발급자 및 피어의 공개 키를 포함하여 피어에 대한 정보가 포함되어 있습니다.
피어 인증서는 핸드셰이크 단계에서 설정되므로 QSslSocket::sslErrors() 신호, QNetworkReply::sslErrors() 신호 또는 QSslSocket::encrypted() 신호에 연결된 슬롯에서 피어 인증서에 액세스하는 것이 안전합니다.
null 인증서가 반환되면 SSL 핸드셰이크가 실패했거나, 연결된 호스트에 인증서가 없거나, 연결되지 않았음을 의미할 수 있습니다.
상대방의 전체 인증서 체인을 확인하려면 peerCertificateChain()를 사용하여 모든 인증서를 한 번에 가져옵니다.
peerCertificateChain(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors() 및 QNetworkReply::ignoreSslErrors()도 참조하세요 .
QList<QSslCertificate> QSslConfiguration::peerCertificateChain() const
피어의 바로 인증서부터 시작하여 CA의 인증서로 끝나는 피어의 디지털 인증서 체인을 반환합니다.
피어 인증서는 핸드셰이크 단계에서 자동으로 확인됩니다. 이 기능은 일반적으로 표시할 인증서를 가져오거나 연결 진단을 수행하는 데 사용됩니다. 인증서에는 호스트 이름, 발급자 이름 및 발급자 공개 키를 포함하여 피어 및 인증서 발급자에 대한 정보가 포함되어 있습니다.
피어 인증서는 핸드셰이크 단계에서 설정되므로 QSslSocket::sslErrors() 신호, QNetworkReply::sslErrors() 신호 또는 QSslSocket::encrypted() 신호에 연결된 슬롯에서 피어 인증서에 액세스하는 것이 안전합니다.
빈 목록이 반환되면 SSL 핸드셰이크가 실패했거나 연결된 호스트에 인증서가 없거나 연결되지 않았음을 의미할 수 있습니다.
상대방의 즉시 인증서만 가져오려면 peerCertificate()를 사용합니다.
peerCertificate(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors() 및 QNetworkReply::ignoreSslErrors()도 참조하세요 .
int QSslConfiguration::peerVerifyDepth() const
SSL 핸드셰이크 단계에서 확인할 상대방의 인증서 체인에 있는 최대 인증서 수를 반환하거나, 최대 깊이를 설정하지 않은 경우 0(기본값)을 반환하여 전체 인증서 체인을 확인해야 함을 나타냅니다.
인증서는 발급 순서대로 확인되며, 상대방의 자체 인증서부터 시작하여 발급자의 인증서 순으로 확인됩니다.
setPeerVerifyDepth() 및 peerVerifyMode()도 참조하세요 .
QSslSocket::PeerVerifyMode QSslConfiguration::peerVerifyMode() const
확인 모드를 반환합니다. 이 모드는 QSslSocket 가 피어에 인증서를 요청할지(즉, 클라이언트가 서버에 인증서를 요청할지 또는 서버가 클라이언트에 인증서를 요청할지), 이 인증서가 유효해야 하는지 여부를 결정합니다.
기본 모드는 AutoVerifyPeer로, QSslSocket 에 클라이언트에 VerifyPeer, 서버에 QueryPeer를 사용하도록 지시합니다.
setPeerVerifyMode()도 참조하세요 .
QByteArray QSslConfiguration::preSharedKeyIdentityHint() const
신원 힌트를 반환합니다.
setPreSharedKeyIdentityHint()도 참조하세요 .
QSslKey QSslConfiguration::privateKey() const
이 연결에 할당된 SSL key 또는 아직 할당된 키가 없는 경우 null 키를 반환합니다.
setPrivateKey() 및 localCertificate()도 참조하세요 .
QSsl::SslProtocol QSslConfiguration::protocol() const
이 SSL 구성에 대한 프로토콜 설정을 반환합니다.
setProtocol()도 참조하세요 .
QSslCipher QSslConfiguration::sessionCipher() const
소켓의 암호화 cipher 를 반환하거나 연결이 암호화되지 않은 경우 null 암호를 반환합니다. 세션에 대한 소켓의 암호는 핸드셰이크 단계에서 설정됩니다. 이 암호는 소켓을 통해 전송되는 데이터를 암호화하고 해독하는 데 사용됩니다.
SSL 인프라는 핸드셰이크 단계에서 최종적으로 세션 암호를 선택할 암호의 정렬된 목록을 설정하는 기능도 제공합니다. 핸드셰이크 단계가 시작되기 전에 이 정렬된 목록이 준비되어 있어야 합니다.
ciphers(), setCiphers() 및 supportedCiphers()도 참조하세요 .
QSsl::SslProtocol QSslConfiguration::sessionProtocol() const
연결이 암호화되지 않은 경우 소켓의 SSL/TLS 프로토콜 또는 UnknownProtocol을 반환합니다. 세션에 대한 소켓의 프로토콜은 핸드셰이크 단계에서 설정됩니다.
protocol() 및 setProtocol()도 참조하세요 .
QByteArray QSslConfiguration::sessionTicket() const
QSsl::SslOptionDisableSessionPersistence 이 꺼져 있는 경우 이 함수는 SSL 핸드셰이크에 사용된 세션 티켓을 디스크에 보존하는 데 적합한 ASN.1 형식으로 반환합니다. 세션 티켓이 사용되지 않았거나 QSsl::SslOptionDisableSessionPersistence 이 해제되지 않은 경우 이 함수는 빈 QByteArray 을 반환합니다.
참고: 세션 티켓을 디스크 등에 보존할 때는 세션 매개변수로 암호화된 데이터를 도청할 수 있으므로 세션을 알면 잠재적인 공격자에게 세션이 노출되지 않도록 주의하세요.
setSessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() 및 QSslSocket::newSessionTicketReceived()도 참조하세요 .
int QSslConfiguration::sessionTicketLifeTimeHint() const
QSsl::SslOptionDisableSessionPersistence 이 꺼져 있으면 이 함수는 서버에서 보낸 세션 티켓 유효 기간 힌트(0일 수 있음)를 반환합니다. 서버가 세션 티켓을 보내지 않았거나(예: 세션을 다시 시작할 때 또는 서버가 지원하지 않는 경우) QSsl::SslOptionDisableSessionPersistence 이 꺼져 있지 않으면 이 함수는 -1을 반환합니다.
sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() 및 QSslSocket::newSessionTicketReceived()도 참조하세요 .
void QSslConfiguration::setAllowedNextProtocols(const QList<QByteArray> &protocols)
이 함수는 다음 프로토콜 협상(NPN) 또는 애플리케이션 계층 프로토콜 협상(ALPN) TLS 확장을 통해 서버와 협상할 수 있는 protocols 을 설정하며, protocols 의 각 요소는 허용되는 프로토콜을 하나씩 정의해야 합니다. 연결하기 전에 이 함수를 명시적으로 호출하여 SSL 핸드셰이크에서 NPN/ALPN 확장을 전송해야 합니다. 협상 성공 여부는 nextProtocolNegotiationStatus()를 통해 조회할 수 있습니다.
nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), allowedNextProtocols() 및 QSslConfiguration::NextProtocolHttp1_1 을참조하세요 .
void QSslConfiguration::setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>())
백엔드별 구성을 설정하거나 지웁니다.
backendConfiguration 매개변수가 없으면 이 함수는 백엔드 관련 구성을 지웁니다. 지원되는 옵션에 대한 자세한 내용은 setBackendConfigurationOption() 문서에서 확인할 수 있습니다.
backendConfiguration() 및 setBackendConfigurationOption()도 참조하세요 .
void QSslConfiguration::setBackendConfigurationOption(const QByteArray &name, const QVariant &value)
백엔드별 구성에서 name 옵션을 value 으로 설정합니다.
OpenSSL(>= 1.0.2) 백엔드에서 지원되는 옵션은 지원되는 구성 파일 명령어 문서에서 확인할 수 있습니다. value 매개변수의 예상 유형은 모든 옵션에 대해 QByteArray 입니다. 이 예에서는 일부 옵션을 사용하는 방법을 보여줍니다.
참고: 백엔드별 구성은 일반 구성 이후에 적용됩니다. 백엔드별 구성을 사용하여 일반 구성 옵션을 다시 설정하면 일반 구성 옵션을 덮어쓰게 됩니다.
backendConfiguration() 및 setBackendConfiguration()도 참조하세요 .
void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certificates)
이 소켓의 CA 인증서 데이터베이스를 certificates 로 설정합니다. 인증서 데이터베이스는 SSL 핸드셰이크 전에 설정해야 합니다. CA 인증서 데이터베이스는 핸드셰이크 단계에서 소켓이 상대방의 인증서를 검증하는 데 사용됩니다.
참고: 기본 구성은 시스템 CA 인증서 데이터베이스를 사용합니다. 이를 사용할 수 없는 경우(일반적으로 iOS의 경우처럼) 기본 데이터베이스는 비어 있습니다.
caCertificates(), addCaCertificates() 및 addCaCertificate()도 참조하세요 .
void QSslConfiguration::setCiphers(const QList<QSslCipher> &ciphers)
이 소켓의 암호화 암호 집합을 ciphers 으로 설정하며, supportedCiphers()에서 반환한 목록에 있는 암호의 하위 집합을 포함해야 합니다.
암호 모음 제한은 세션 암호가 선택되는 핸드셰이크 단계 전에 수행해야 합니다.
ciphers() 및 supportedCiphers()도 참조하세요 .
[since 6.0]
void QSslConfiguration::setCiphers(const QString &ciphers)
이 구성의 암호화 암호 제품군을 콜론으로 구분된 암호 제품군 이름 목록인 ciphers 으로 설정합니다. 암호는 가장 선호되는 암호부터 시작하여 선호도 순으로 나열됩니다. ciphers 의 각 암호 이름은 supportedCiphers()에서 반환한 목록에 있는 암호의 이름이어야 합니다. 암호 모음 제한은 세션 암호가 선택되는 핸드셰이크 단계 전에 수행해야 합니다.
참고: Schannel 백엔드에서는 암호의 순서가 무시되고 핸드셰이크 중에 가장 안전한 암호를 선택합니다.
이 기능은 Qt 6.0에 도입되었습니다.
ciphers()도 참조하세요 .
[static]
void QSslConfiguration::setDefaultConfiguration(const QSslConfiguration &configuration)
새 SSL 연결에 사용할 기본 SSL 구성을 configuration 으로 설정합니다. 기존 연결은 이 호출의 영향을 받지 않습니다.
supportedCiphers() 및 defaultConfiguration()도 참조하세요 .
[static]
void QSslConfiguration::setDefaultDtlsConfiguration(const QSslConfiguration &configuration)
새 DTLS 연결에 사용할 기본 DTLS 구성을 configuration 로 설정합니다. 기존 연결은 이 호출의 영향을 받지 않습니다.
defaultDtlsConfiguration()도 참조하세요 .
void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)
이 소켓이 서버로 작동할 때 사용할 사용자 정의 Diffie-Hellman 파라미터 집합을 dhparams 으로 설정합니다.
설정된 Diffie-Hellman 파라미터가 없는 경우 QSslConfiguration 객체는 기본적으로 RFC 3526의 2048비트 MODP 그룹을 사용합니다.
6.7부터는 tls 백엔드에서 자동 선택을 지원하는 경우 빈 Diffie-Hellman 파라미터를 제공하여 자동 선택을 사용할 수 있습니다(openssl의 SSL_CTX_set_dh_auto 참조).
참고: 기본 매개변수는 향후 Qt 버전에서 변경될 수 있습니다. 해당 버전에서 사용하는 기본값을 확인하려면 사용 중인 정확한 Qt 버전의 설명서를 확인하세요.
diffieHellmanParameters()도 참조하세요 .
void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)
이 함수는 enable 가 참일 때 DTLS 쿠키 확인을 활성화합니다.
dtlsCookieVerificationEnabled()도 참조하세요 .
void QSslConfiguration::setEllipticCurves(const QList<QSslEllipticCurve> &curves)
이 소켓에서 사용할 타원 곡선 목록을 curves 으로 설정하며, supportedEllipticCurves()에서 반환한 목록에 곡선의 하위 집합이 포함되어야 합니다.
타원 곡선을 제한하는 것은 세션 암호가 선택되는 핸드셰이크 단계 전에 수행해야 합니다.
ellipticCurves도 참조하세요 .
[since 6.0]
void QSslConfiguration::setHandshakeMustInterruptOnError(bool interrupt)
interrupt 가 참이고 기본 백엔드가 이 옵션을 지원하는 경우, 인증서 확인 중에 발견된 오류는 QSslSocket::handshakeInterruptedOnError()를 전송하여 즉시 보고합니다. 이렇게 하면 완료되지 않은 핸드셰이크를 중지하고 적절한 경고 메시지를 상대방에게 보낼 수 있습니다. 이 경우 애플리케이션에서 특별한 조치가 필요하지 않습니다. QSslSocket 은 경고 메시지를 보낸 후 연결을 닫습니다. 오류를 검사한 후 애플리케이션이 핸드셰이크를 계속하려면 해당 슬롯 함수에서 QSslSocket::continueInterruptedHandshake()를 호출해야 합니다. 신호-슬롯 연결은 직접 연결해야 합니다.
참고: 핸드셰이크 중단이 활성화되면 QSslSocket::peerVerifyError()에서 보고되는 오류는 대신 QSslSocket::handshakeInterruptedOnError()에서만 보고됩니다.
참고: 핸드셰이크가 계속되더라도 이러한 오류는 QSslSocket::sslErrors() 신호를 보낼 때 보고되므로 해당 함수 슬롯에서는 무시해야 합니다.
이 함수는 Qt 6.0에 도입되었습니다.
handshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError() 및 QSslSocket::continueInterruptedHandshake()도 참조하십시오 .
void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)
SSL 핸드셰이크 중에 상대방에게 제시할 인증서를 certificate 으로 설정합니다.
연결이 설정된 후에는 인증서를 설정해도 효과가 없습니다.
인증서는 SSL 프로세스에서 사용되는 식별 수단입니다. 로컬 인증서는 원격 끝에서 인증 기관 목록과 비교하여 로컬 사용자의 신원을 확인하는 데 사용됩니다. HTTP 웹 브라우징과 같은 대부분의 경우 서버만 클라이언트를 식별하므로 클라이언트는 인증서를 보내지 않습니다.
localCertificate()도 참조하세요 .
void QSslConfiguration::setLocalCertificateChain(const QList<QSslCertificate> &localChain)
SSL 핸드셰이크 중에 상대방에게 제공할 인증서 체인을 localChain 로 설정합니다.
연결이 설정된 후에는 인증서 체인을 설정해도 효과가 없습니다.
인증서는 SSL 프로세스에서 사용되는 식별 수단입니다. 로컬 인증서는 원격 끝에서 인증 기관 목록에 대해 로컬 사용자의 신원을 확인하는 데 사용됩니다. HTTP 웹 브라우징과 같은 대부분의 경우 서버만 클라이언트를 식별하므로 클라이언트는 인증서를 보내지 않습니다.
QSslConfiguration::setLocalCertificate()와 달리 이 방법은 인증서의 유효성을 검사하기 위해 필요한 중간 인증서를 지정할 수 있습니다. 목록의 첫 번째 항목은 리프 인증서여야 합니다.
localCertificateChain()도 참조하세요 .
[since 6.0]
void QSslConfiguration::setMissingCertificateIsFatal(bool cannotRecover)
cannotRecover 가 참이고 사용 중인 확인 모드가 QSslSocket::VerifyPeer 또는 QSslSocket::AutoVerifyPeer (클라이언트 측 소켓의 경우)인 경우, 누락된 피어의 인증서는 무시할 수 없는 복구 불가능한 오류로 처리됩니다. 연결을 닫기 전에 적절한 경고 메시지가 피어에게 전송됩니다.
참고: Qt가 OpenSSL 백엔드로 구성 및 빌드된 경우에만 사용할 수 있습니다.
이 기능은 Qt 6.0에 도입되었습니다.
QSslSocket::ignoreSslErrors(), QSslSocket::PeerVerifyMode, missingCertificateIsFatal()도 참조하세요 .
void QSslConfiguration::setOcspStaplingEnabled(bool enabled)
enabled 가 참이면 클라이언트 QSslSocket 는 핸드셰이크를 시작할 때 상대방에게 인증서 상태 요청을 보냅니다. 핸드셰이크 중에 QSslSocket 는 서버의 응답을 확인합니다. 이 값은 핸드셰이크를 시작하기 전에 설정해야 합니다.
ocspStaplingEnabled()도 참조하세요 .
void QSslConfiguration::setPeerVerifyDepth(int depth)
SSL 핸드셰이크 단계에서 확인할 상대방의 인증서 체인에 있는 최대 인증서 수를 depth 로 설정합니다. 깊이를 0으로 설정하면 최대 깊이가 설정되지 않은 것으로, 전체 인증서 체인을 확인해야 함을 나타냅니다.
인증서는 발급 순서대로 확인되며, 상대방의 인증서부터 시작하여 발급자의 인증서 순으로 확인됩니다.
peerVerifyDepth() 및 setPeerVerifyMode()도 참조하세요 .
void QSslConfiguration::setPeerVerifyMode(QSslSocket::PeerVerifyMode mode)
확인 모드를 mode 로 설정합니다. 이 모드는 QSslSocket 이 피어에게 인증서를 요청해야 하는지(즉, 클라이언트가 서버에 인증서를 요청하는지 또는 서버가 클라이언트에게 인증서를 요청하는지), 이 인증서의 유효성을 요구해야 하는지 여부를 결정합니다.
기본 모드는 AutoVerifyPeer로, QSslSocket 에 클라이언트에 VerifyPeer, 서버에 QueryPeer를 사용하도록 지시합니다.
peerVerifyMode()도 참조하세요 .
void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint)
미리 공유한 키 인증의 ID 힌트를 hint 로 설정합니다. 이는 다음에 시작하는 핸드셰이크에 영향을 미치며, 이미 암호화된 소켓에서 이 함수를 호출해도 소켓의 ID 힌트에는 영향을 미치지 않습니다.
신원 힌트는 QSslSocket::SslServerMode 에서만 사용됩니다!
preSharedKeyIdentityHint()도 참조하세요 .
void QSslConfiguration::setPrivateKey(const QSslKey &key)
연결의 비공개 key 를 key 로 설정합니다. 비공개 키와 로컬 certificate 은 SSL 피어에게 자신의 신원을 증명해야 하는 클라이언트와 서버에서 사용합니다.
SSL 서버 소켓을 만드는 경우 키와 로컬 인증서가 모두 필요합니다. SSL 클라이언트 소켓을 만드는 경우 클라이언트가 SSL 서버에 자신을 식별해야 하는 경우 키와 로컬 인증서가 필요합니다.
privateKey() 및 setLocalCertificate()도 참조하세요 .
void QSslConfiguration::setProtocol(QSsl::SslProtocol protocol)
이 구성의 프로토콜 설정을 protocol 로 설정합니다.
이미 연결이 설정된 후에는 프로토콜을 설정해도 효과가 없습니다.
protocol()도 참조하세요 .
void QSslConfiguration::setSessionTicket(const QByteArray &sessionTicket)
SSL 핸드셰이크에서 사용할 세션 티켓을 설정합니다. QSsl::SslOptionDisableSessionPersistence 이 기능을 사용하려면 이 꺼져 있어야 하며 sessionTicket 은 sessionTicket()에서 반환한 ASN.1 형식이어야 합니다.
sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() 및 QSslSocket::newSessionTicketReceived()도 참조하세요 .
void QSslConfiguration::setSslOption(QSsl::SslOption option, bool on)
SSL 호환성을 활성화 또는 비활성화합니다 option. on 이 참이면 option 이 활성화됩니다. on 이 거짓이면 option 이 비활성화됩니다.
testSslOption()도 참조하세요 .
[static]
QList<QSslCipher> QSslConfiguration::supportedCiphers()
이 시스템에서 지원하는 암호화 암호 목록을 반환합니다. 이 목록은 시스템의 SSL 라이브러리에 의해 설정되며 시스템마다 다를 수 있습니다.
ciphers() 및 setCiphers()도 참조하세요 .
[static]
QList<QSslEllipticCurve> QSslConfiguration::supportedEllipticCurves()
이 시스템에서 지원하는 타원 커브 목록을 반환합니다. 이 목록은 시스템의 SSL 라이브러리에 의해 설정되며 시스템마다 다를 수 있습니다.
ellipticCurves() 및 setEllipticCurves()도 참조하세요 .
[noexcept]
void QSslConfiguration::swap(QSslConfiguration &other)
이 SSL 구성 인스턴스를 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.
[static]
QList<QSslCertificate> QSslConfiguration::systemCaCertificates()
이 함수는 운영 체제에서 제공하는 CA 인증서 데이터베이스를 제공합니다. 이 함수가 반환하는 CA 인증서 데이터베이스는 기본값 QSslConfiguration 에서 caCertificates()가 반환하는 데이터베이스를 초기화하는 데 사용됩니다.
caCertificates(), setCaCertificates(), defaultConfiguration(), addCaCertificate() 및 addCaCertificates()도 참조하세요 .
bool QSslConfiguration::testSslOption(QSsl::SslOption option) const
지정된 SSL 호환성 option 이 활성화된 경우 true
을 반환합니다.
setSslOption()도 참조하세요 .
bool QSslConfiguration::operator!=(const QSslConfiguration &other) const
QSslConfiguration 이 other 과 다르면 true
을 반환합니다. 상태나 설정이 다르면 두 개의 QSslConfiguration 객체가 서로 다른 것으로 간주됩니다.
operator==()도 참조하세요 .
QSslConfiguration &QSslConfiguration::operator=(const QSslConfiguration &other)
other 의 구성 및 상태를 복사합니다. other 이 null이면 이 개체도 null이 됩니다.
bool QSslConfiguration::operator==(const QSslConfiguration &other) const
QSslConfiguration 객체가 other 와 같으면 true
를 반환합니다.
두 개의 QSslConfiguration 객체는 설정과 상태가 정확히 동일한 경우 동일한 것으로 간주됩니다.
operator!=()도 참조하세요 .
© 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.