Qt를 사용하여 ssl 프록시 서버를 작성하고 있습니다. 다음은 코드 샘플입니다.Qt 5.2.1로 작성된 SSL 서버에서 SSL 핸드 셰이크가 실패했습니다.
개인 키로 CA 자체 서명 인증서를 생성하고 CA 인증서로 서명 한 특정 도메인에 대해 다른 인증서를 생성했습니다. CA 인증서를 /usr/local/share/ca-certificates
에 복사 한 후 sudo update-ca-certificates
을 실행하십시오. 내 서버가 HTTPS 프록시로 사용 타사 응용 프로그램을 사용하여 프록시 서버에 연결하려고 할 때하지만 다음 출력 QAbstractSocket :: SslHandshakeFailedError 오류가 :
Listening port 8888
incomingConnection
onModeChanged(2)
onError(13)
"Error during SSL handshake: error:1407609B:SSL routines:SSL23_GET_CLIENT_HELLO:https proxy request"
onStateChanged(0)
그래서 심지어 onReadyRead
슬롯에 들어 가지 않는다 . openssl 명령을 사용하여 서버를 테스트하려고하면 : openssl s_client -connect 127.0.0.1:8888 -debug
- 내 서버에 성공적으로 연결됩니다.
verify error:num=19:self signed certificate in certificate chain
verify return:0
No client certificate CA names sent
---
SSL handshake has read 2667 bytes and written 439 bytes
Verify return code: 19 (self signed certificate in certificate chain)
---
하지만 내 onReadyRead
슬롯에 원시 값을 내 서버에 데이터를 전송하고 볼 수 있습니다 출력 다음 줄이 포함되어 있습니다.
내 ENV에 대한 몇 가지 정보 : OS : 우분투 12.04 x86_64의 Qt는 : 5.2.1 (GCC 4.6.1, 64 비트) 사전에
감사합니다,
매우 가치있는 대답! – c1tru55