这是用QWebPage设置SSL协议的正确方法吗?
我一直在使用SSL在Qt的,在这里我需要设置一个特定的协议(而不是默认的“安全协议”)。它看起来像这样工作的:这是用QWebPage设置SSL协议的正确方法吗?
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1_0);
QSslConfiguration::setDefaultConfiguration(config);
但它让我不舒服设置协议在这样一个全球性的方式,而不是将它设置在QWebPage
或QWebView
什么的。我是否错过了一些明显的东西,或者这真的是最好的方法吗?我知道我可以在SSL套接字上设置它,但我使用的是QtWebKit,并且无法访问单个套接字。
我发现这样做是为了在延长QNetworkAccessManager
并设置协议方式:
class NetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
explicit NetworkAccessManager(QObject *parent = 0);
protected:
virtual QNetworkReply * createRequest(Operation operation, const QNetworkRequest & request, QIODevice * outgoingData = 0) {
// I have no idea why request is const, but I need to change it
QNetworkRequest notConstRequest = request;
QSslConfiguration conf = notConstRequest.sslConfiguration();
conf.setProtocol(QSsl::TlsV1_0);
notConstRequest.setSslConfiguration(conf);
return QNetworkAccessManager::createRequest(operation, notConstRequest, outgoingData);
}
};
然后我就可以把它用我英寸
您可能会有所帮助:Https page works in Windows but not in Linux,他用同样的方法(靠近页面底部),你设置的协议做。
我找不到很多资源,但是诺基亚的Qt文档明确指出您可以可以专门设置QSslSocket对象上的协议。相关位:
请注意,更改QSslConfiguration中的设置不足以更改相关SSL连接中的设置。您必须在修改的QSslConfiguration对象上调用setSslConfiguration才能实现此目的。下面的例子说明如何将协议更改为使用TLSv1在QSslSocket对象:
QSslConfiguration config = sslSocket.sslConfiguration();
config.setProtocol(QSsl::TlsV1);
sslSocket.setSslConfiguration(config);
所以,是的,最好的办法可能是将其设置在每个插座对象的基础上,但是如果不是可用你的方法也可以。诺基亚页:QSslConfiguration
不幸的是,这是每个插座,插座是* *的方式水平以下'QWebPage'访问。 – 2012-08-29 21:50:19
很好的解决方案,以及类似http://stackoverflow.com/questions/11303904/how-to-set-qwebviews-socket-options,这也解释了为什么我的解决方案并不为你工作。很高兴你知道了! – jaypb 2012-08-29 22:28:17