我正在尝试与SSL进行SSL握手www1.filemail.com.我正在使用cURL cacert.pem,但我收到此错误:
Unacceptable certificate from 188.138.81.30: application verification failure
Run Code Online (Sandbox Code Playgroud)
与任何其他HTTPS网站进行握手有效 - 包括www2.filemail.com.www1并且www2应该配置相同 - 并且它们在所有浏览器中都能正常工作.他们也在这里测试很好(两个站点都发送了相同的证书和中间证书):
为什么我www1使用OpenSSL和cacert.pem文件会遇到这个问题?
www1和www2的证书设置必须有所不同.我已经使用无数的工具(openssl,ssllabs等)进行了测试,试图找出差异 - 但我总是得到两个站点完全相同的结果(运行我的代码时除外)
我在这里错过了什么?这些网站有什么区别?
(应该注意的是,我们使用的是RapidSSL提供的相对便宜的通配符证书 - 所以我猜它与中间证书或跨根证书有关 - 但是当使用上面提到的工具进行测试时,一切似乎都是有序的.)
码:
Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> pCert = new Poco::Net::ConsoleCertificateHandler(false);
Poco::Net::Context::Ptr pContext = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "C:\\cacert.pem", Poco::Net::Context::VERIFY_RELAXED, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
Poco::Net::SSLManager::instance().initializeClient(0, pCert, pContext);
URI uri("https://www1.filemail.com");
Poco::Net::SecureStreamSocket ss(Poco::Net::SocketAddress(uri.getHost().c_str(), uri.getPort()));
ss.completeHandshake();
Run Code Online (Sandbox Code Playgroud) 我使用C++ 11(VS2013)编写了一个基于UDP的传输协议.它的速度非常快 - 99.9%的时间都很棒.
但我已经观察过几次将错误的字节写入磁盘(三星250 GB SSD 850 EVO) - 或者至少看起来如此.
这基本上是我转移6GB测试文件时会发生的事情:
在传输完整个文件后,我在服务器和客户端上都对6GB文件进行了完整的SHA256哈希,但令我恐惧的是,我在过去几天观察到两次散列不相同(当进行大约20次测试传输时) ).
在比较Beyond Compare中的文件后,我经常发现在服务器端有一两个位(在6 GB文件中)是错误的.
服务器代码 - 在验证DataPackage哈希后调用
void WriteToFile(long long position, unsigned char * data, int lengthOfData){
boost::lock_guard<std::mutex> guard(filePointerMutex);
//Open if required
if (filePointer == nullptr){
_wfopen_s(&filePointer, (U("\\\\?\\") + AbsoluteFilePathAndName).c_str(), L"wb");
}
//Seek
fsetpos(filePointer, &position);
//Write - not checking the result of the fwrite operation - …Run Code Online (Sandbox Code Playgroud)