Я тут один тусуюсь в этой теме) Вот отвечаю себе(может кому еще пригодится):
1)разумно, даже нужно, чтобы защитить информацию от перехвата
2)да, сертификат и ключ генерируются на хост(сайт) и применяются для всех клиентов
3)В принципе безопасно, но только для тестовых целей...или например для локальной сети..
Столкнулся с проблемой - клиент не хотел принимать сертификат, т.к. он самоподписной(self-signed), решается вызовом ignoreSslErrors () или ignoreSslErrors ( const QList<QSslError> & errors ).
Для второго случая в мануале такой коммент:
This is an overloaded function.
This method tells QSslSocket to ignore only the errors given in errors.
Note that you can set the expected certificate in the SSL error: If, for instance, you want to connect to a server that uses a self-signed certificate, consider the following snippet:
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem"));
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QSslSocket socket;
socket.ignoreSslErrors(expectedSslErrors);
socket.connectToHostEncrypted("server.tld", 443);
Multiple calls to this function will replace the list of errors that were passed in previous calls. You can clear the list of errors you want to ignore by calling this function with an empty list.
This function was introduced in Qt 4.6.
See also sslErrors().