QNetworkAccessManager
를 사용하여 https URL을 가져오면 SslHandshakeFailedError 에러와 함께 실패하는 경우가 있다.
“the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.”
슬롯을 QNetworkReply
의 error(QNetworkReply::NetworkError)
신호에 연결하여 이 오류를 잡을(catch) 수 있다. SslHandshakeFailedError 임을 알 수 있다. 이 에러에 대해 이곳에서 자세히 알 수 있다.
Qt 응용프로그램에서 이 SslHandshakeFailedError를 수정하려면 2단계를 수행해야 한다.
먼저 요청에 대해 피어 확인 모드를 QSslSocket::VerifyNone
으로 설정한다.
QSslConfiguration conf = request.sslConfiguration();
// QSslSocket은 피어로부터 인증서를 요청하지 않는다.
conf.setPeerVerifyMode(QSslSocket::VerifyNone);
request.setSslConfiguration(conf);
서버의 인증서를 확인하지 않아도 SSL 오류(QSslError::NoError)가 계속 발생한다. 그래서 다음 단계는 QNetworkReply의 sslErrors(QList<QSslError>)
신호를 ignoreSslErrors()
슬롯에 연결하여 오류를 무시하는 것이다.