2013-01-06 2 views
1

Qt 설명서의 샘플 코드를 사용하여 SSL 서버를 만들었습니다. 그런 다음 QSslSocket::connectToHostEncrypted을 사용하여 연결합니다.QSslSocket :: startServerEncryption이 "PEM_READ_BIO_PRIVATEKEY : 잘못된 암호 읽기"로 실패합니다.

서버는하지만, 실패하고이 QSslSocket::errorString()

Cannot provide a certificate with no key, 
error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read 

에 나는이 코드를 사용하여 인증서와 개인 키를 설정할 수 있습니다 :이 명령을 사용하여

serverSocket->setLocalCertificate("/home/user/Workspace/openssl/cacert.pem"); 
serverSocket->setPrivateKey("/home/user/Workspace/openssl/privkey.pem"); 

나는 cacert.pemprivkey.pem을 만들었을 우분투 :

openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 1825 

답변

1

오류가 발생했습니다. 개인 키의 암호를 지정하지 않았기 때문에 (인증서 생성 중에 openssl이 나에게 요청한 암호). 그래서 그 대신

serverSocket->setPrivateKey("/home/user/Workspace/openssl/privkey.pem"); 

의 지금

serverSocket->setPrivateKey("/home/user/Workspace/openssl/privkey.pem", QSsl::Rsa, QSsl::Pem, "mypassword"); 

를 호출하고이 문제를 해결합니다.