cacert.pem
,但我收到这个错误:
Unacceptable certificate from 188.138.81.30: application verification failure
与任何其他HTTPS网站进行握手,包括www2.filemail.com. www1和www2应该配置相同 – 它们都可以在所有浏览器中正常工作.他们也在这里测试(相同的证书和中间证书都发送出去两个站点):
> SSL Labs www1.filemail.com
> SSL Labs www2.filemail.com
为什么我使用OpenSSL和cacert.pem文件获得www1的这个问题?
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();
解决方法
www1 and www2 should be identically configured – and they both work fine in all browsers…
以下是证书.差异表明它们是相同的终端实体(服务器)证书:
$diff www1.txt www2.txt $
每个服务器可以是发送不同的链.使用openssl s_client与openssl x509和-showcerts来获取链.
WWW1
$openssl s_client -connect www1.filemail.com:443 -tls1 -servername www1.filemail.com | openssl x509 -text -noout > www1.txt depth=1 C = US,O = GeoTrust Inc.,CN = RapidSSL SHA256 CA - G3 verify error:num=20:unable to get local issuer certificate ^C riemann:~$cat www1.txt Certificate: Data: Version: 3 (0x2) Serial Number: 15955 (0x3e53) Signature Algorithm: sha256WithRSAEncryption Issuer: C = US,CN = RapidSSL SHA256 CA - G3 Validity Not Before: Oct 14 20:14:57 2014 GMT Not After : Aug 4 13:09:28 2018 GMT Subject: OU = GT83551982,OU = See www.rapidssl.com/resources/cps (c)14,OU = Domain Control Validated - RapidSSL(R),CN = *.filemail.com Subject Public Key Info: Public Key Algorithm: rSAEncryption Public-Key: (2048 bit) Modulus: 00:c5:38:89:72:40:74:77:e2:76:f0:20:ae:d9:91: 26:ac:42:85:03:86:ff:2f:a1:94:b7:f3:86:4c:f7: ce:63:46:47:e6:03:73:95:01:07:0b:e0:60:9a:93: c3:b4:14:bc:4e:16:f2:50:12:89:11:42:f5:58:51: 74:15:81:d0:ce:6e:e2:85:e8:d2:3a:38:48:a3:02: 80:e0:a1:fa:ea:8f:ca:ee:bc:00:b3:b2:64:7f:9c: da:ca:e8:3f:a7:48:af:5c:ed:8e:2f:27:95:19:52: 85:d1:15:9b:f5:4d:b7:21:44:89:05:6f:06:92:7b: ab:9e:10:63:be:7e:ce:3b:58:10:68:ae:7a:52:6e: e5:62:bf:ff:56:33:06:51:e5:61:a0:bd:6b:3c:c9: f3:55:54:02:16:f2:56:27:81:be:83:82:53:25:1e: c4:1c:1d:65:da:9f:2c:f7:97:49:3c:e1:03:35:1c: da:c3:02:6d:93:1a:4a:89:53:4c:f5:3e:e7:f9:b9: c0:10:e0:80:77:3a:d9:5d:ed:b1:46:9e:92:7e:86: 46:d7:be:fe:af:5a:af:02:b4:1b:d2:2b:08:1d:bc: b5:93:8c:48:45:27:ba:26:69:a9:a8:9f:98:d3:de: 2d:f5:70:f5:39:6a:30:3b:8c:01:6c:85:19:a2:a6: 9a:65 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Authority Key Identifier: keyid:C3:9C:F3:FC:D3:46:08:34:BB:CE:46:7F:A0:7C:5B:F3:E2:08:CB:59 Authority Information Access: OCSP - URI:http://gv.symcd.com CA Issuers - URI:http://gv.symcb.com/gv.crt X509v3 Key Usage: critical Digital Signature,Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication,TLS Web Client Authentication X509v3 Subject Alternative Name: DNS:*.filemail.com,DNS:filemail.com X509v3 CRL Distribution Points: Full Name: URI:http://gv.symcb.com/gv.crl X509v3 Basic Constraints: critical CA:FALSE X509v3 Certificate Policies: Policy: 2.16.840.1.113733.1.7.54 CPS: https://www.rapidssl.com/legal Signature Algorithm: sha256WithRSAEncryption 77:7e:54:47:93:6c:b0:4e:9c:dc:01:47:1f:76:54:9d:f2:42: 94:c1:94:f8:7b:b4:68:82:fe:6d:66:45:68:e1:bd:df:ba:6d: 15:a1:6c:b0:79:9e:d7:99:d9:11:7e:84:e9:f1:63:7c:92:25: c3:fe:cc:02:1a:61:b9:a3:29:59:18:c2:f1:d2:d7:84:dc:8d: 28:2e:b5:6e:91:d9:68:65:37:5a:b9:b3:d5:f4:d1:1f:b2:ec: 2b:0f:e1:50:30:72:f7:04:70:68:26:b0:61:47:44:49:d0:62: 31:81:53:fa:cc:3a:7b:a1:3b:74:da:c2:3b:7b:5d:9c:23:de: 69:92:51:fc:ff:8d:7a:ea:fd:b2:68:5f:38:3d:22:f6:a6:4a: d7:a0:88:97:06:54:fd:ba:dc:b9:3a:69:25:89:99:0e:81:82: c8:63:5c:87:98:bf:70:08:0a:89:20:a1:17:63:31:26:7b:af: b3:83:f3:9c:b6:7e:64:52:08:bf:a3:74:d5:0c:26:f6:25:7c: b9:cb:27:57:88:7f:af:1c:b5:99:08:4a:fd:c2:b4:ec:7a:40: ea:80:ac:e8:88:84:33:53:ab:90:af:bc:bc:ea:6f:88:fe:a8: f9:c7:63:a3:74:2c:0b:37:5c:90:39:ad:85:82:6a:e9:ea:a7: e1:55:c2:dd
WWW2
$openssl s_client -connect www2.filemail.com:443 -tls1 -servername www2.filemail.com | openssl x509 -text -noout > www2.txt depth=1 C = US,CN = RapidSSL SHA256 CA - G3 verify error:num=20:unable to get local issuer certificate ^C riemann:~$cat www2.txt Certificate: Data: Version: 3 (0x2) Serial Number: 15955 (0x3e53) Signature Algorithm: sha256WithRSAEncryption Issuer: C = US,DNS:filemail.com X509v3 CRL Distribution Points: Full Name: URI:http://gv.symcb.com/gv.crl X509v3 Basic Constraints: critical CA:FALSE X509v3 Certificate Policies: Policy: 2.16.840.1.113733.1.7.54 CPS: https://www.rapidssl.com/legal Signature Algorithm: sha256WithRSAEncryption 77:7e:54:47:93:6c:b0:4e:9c:dc:01:47:1f:76:54:9d:f2:42: 94:c1:94:f8:7b:b4:68:82:fe:6d:66:45:68:e1:bd:df:ba:6d: 15:a1:6c:b0:79:9e:d7:99:d9:11:7e:84:e9:f1:63:7c:92:25: c3:fe:cc:02:1a:61:b9:a3:29:59:18:c2:f1:d2:d7:84:dc:8d: 28:2e:b5:6e:91:d9:68:65:37:5a:b9:b3:d5:f4:d1:1f:b2:ec: 2b:0f:e1:50:30:72:f7:04:70:68:26:b0:61:47:44:49:d0:62: 31:81:53:fa:cc:3a:7b:a1:3b:74:da:c2:3b:7b:5d:9c:23:de: 69:92:51:fc:ff:8d:7a:ea:fd:b2:68:5f:38:3d:22:f6:a6:4a: d7:a0:88:97:06:54:fd:ba:dc:b9:3a:69:25:89:99:0e:81:82: c8:63:5c:87:98:bf:70:08:0a:89:20:a1:17:63:31:26:7b:af: b3:83:f3:9c:b6:7e:64:52:08:bf:a3:74:d5:0c:26:f6:25:7c: b9:cb:27:57:88:7f:af:1c:b5:99:08:4a:fd:c2:b4:ec:7a:40: ea:80:ac:e8:88:84:33:53:ab:90:af:bc:bc:ea:6f:88:fe:a8: f9:c7:63:a3:74:2c:0b:37:5c:90:39:ad:85:82:6a:e9:ea:a7: e1:55:c2:dd
I am trying to do a SSL handshake towards www1.filemail.com – but I am
getting this error:06003
RapidSSL SHA256 CA – G3是CA;它发出了服务器的证书.服务器被称为主题.当你建立一个链条,前发行人成为当前的主题.在链的顶部是自己签名的根.在根本上,发行人==主体.
RapidSSL G3 CA是(1)自签名,所以它是一个根CA;或(2)由链中较高的另一个CA签名,因此其下属CA(即它具有发行方).在这种情况下,G3 CA是从属的,它有一个发行者.
听起来像一个服务器正在发送验证服务器证书所需的完整链接;而其他服务器不是.服务器应该发送完整的链,以避免PKI中的“which directory” problem. “完整链”是除了自签名根(除了许多发根)之外的每个证书.
客户必须事先信任自己签名的根,否则为什么不应该发送(否则一个坏人可以在自己的链中交换).或者,而不是使用cacert.pem:
Poco::Net::Context::CLIENT_USE,...
您可以加载RapidSSL SHA256 CA – G3,并将其用作信任的根.您将避免cacert.pem中其他300个CA不能验证服务器链的CA.其良好的安全工程.
您可以从rapidSSL的网站Intermediate CA Certificate: RapidSSL with SHA-2 (under SHA-1 Root)获取RapidSSL SHA256 CA – G3.
UPDATE使用RapidSSL SHA256 CA – G3:
以下是签名人的证书:
$cat rapidssl.pem -----BEGIN CERTIFICATE----- MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMTQwODI5MjEzOTMyWhcNMjIwNTIwMjEzOTMyWjBHMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXUmFwaWRTU0wg U0hBMjU2IENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv VJvZWF0eLFbG1eh/9H0WA//Qi1rkjqfdVC7UBMBdmJyNkA+8EGVf2prWRHzAn7Xp SowLBkMEu/SW4ib2YQGRZjEiwzQ0Xz8/kS9EX9zHFLYDn4ZLDqP/oIACg8PTH2lS 1p1kD8mD5xvEcKyU58Okaiy9uJ5p2L4KjxZjWmhxgHsw3hUEv8zTvz5IBVV6s9cQ DAP8m/0Ip4yM26eO8R5j3LMBL3+vV8M8SKeDaCGnL+enP/C1DPz1hNFTvA5yT2AM QriYrRmIV9cE7Ie/fodOoyH5U/02mEiN1vi7SPIpyGTRzFRIU4uvt2UevykzKdkp YEj4/5G8V1jlNS67abZZAgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7 qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUw5zz/NNGCDS7zkZ/oHxb8+IIy1kwEgYD VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCig JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUF BwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARF MEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3Ry dXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQCjWB7GQzKs rC+TeLfqrlRARy1+eI1Q9vhmrNZPc9ZE768LzFvB9E+aj0l+YK/CJ8cW8fuTgZCp fO9vfm5FlBaEvexJ8cQO9K8EWYOHDyw7l8NaEpt7BDV7o5UzCHuTcSJCs6nZb0+B kvwHtnm8hEqddwnxxYny8LScVKoSew26T++TGezvfU5ho452nFnPjJSxhJf3GrkH uLLGTxN5279PURt/aQ1RKsHWFf83UTRlUfQevjhq7A6rvz17OQV79PP7GqHQyH5O ZI3NjGFVkP46yl0lD/gdo0p0Vk8aVUBwdSWmMy66S6VdU5oNMOGNX2Esr8zvsJmh gP8L8mJMcCaY -----END CERTIFICATE-----
注意OpenSSL完成验证返回码:2(无法获得发卡行证书).没错,因为你不在乎发行人.您已经对GeoTrust Inc.,CN = RapidSSL SHA256 CA-G3和RapidSSL SHA256 CA – G3进行了认证/签署了服务器证书.
$openssl s_client -connect www1.filemail.com:443 -tls1 -servername www1.filemail.com -CAfile rapidssl.pem CONNECTED(00000003) depth=1 C = US,CN = RapidSSL SHA256 CA - G3 verify error:num=2:unable to get issuer certificate issuer= C = US,CN = GeoTrust Global CA Server did acknowledge servername extension. --- Certificate chain 0 s:/OU=GT83551982/OU=See www.rapidssl.com/resources/cps (c)14/OU=Domain Control Validated - RapidSSL(R)/CN=*.filemail.com i:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3 1 s:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3 i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA --- Server certificate -----BEGIN CERTIFICATE----- MIIEsDCCA5igAwIBAgICPlMwDQYJKoZIhvcNAQELBQAwRzELMAkGA1UEBhMCVVMx FjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlkU1NMIFNIQTI1 NiBDQSAtIEczMB4XDTE0MTAxNDIwMTQ1N1oXDTE4MDgwNDEzMDkyOFowgZIxEzAR BgNVBAsTCkdUODM1NTE5ODIxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29t L3Jlc291cmNlcy9jcHMgKGMpMTQxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZh bGlkYXRlZCAtIFJhcGlkU1NMKFIpMRcwFQYDVQQDDA4qLmZpbGVtYWlsLmNvbTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMU4iXJAdHfidvAgrtmRJqxC hQOG/y+hlLfzhkz3zmNGR+YDc5UBBwvgYJqTw7QUvE4W8lASiRFC9VhRdBWB0M5u 4oXo0jo4SKMCgOCh+uqPyu68ALOyZH+c2sroP6dIr1ztji8nlRlShdEVm/VNtyFE iQVvBpJ7q54QY75+zjtYEGiuelJu5WK//1YzBlHlYaC9azzJ81VUAhbyVieBvoOC UyUexBwdZdqfLPeXSTzhAzUc2sMCbZMaSolTTPU+5/m5wBDggHc62V3tsUaekn6G Rte+/q9arwK0G9IrCB28tZOMSEUnuiZpqaifmNPeLfVw9TlqMDuMAWyFGaKmmmUC AwEAAaOCAVgwggFUMB8GA1UdIwQYMBaAFMOc8/zTRgg0u85Gf6B8W/PiCMtZMFcG CCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL2d2LnN5bWNkLmNvbTAm BggrBgEFBQcwAoYaaHR0cDovL2d2LnN5bWNiLmNvbS9ndi5jcnQwDgYDVR0PAQH/ BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAnBgNVHREEIDAe gg4qLmZpbGVtYWlsLmNvbYIMZmlsZW1haWwuY29tMCsGA1UdHwQkMCIwIKAeoByG Gmh0dHA6Ly9ndi5zeW1jYi5jb20vZ3YuY3JsMAwGA1UdEwEB/wQCMAAwRQYDVR0g BD4wPDA6BgpghkgBhvhFAQc2MCwwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LnJh cGlkc3NsLmNvbS9sZWdhbDANBgkqhkiG9w0BAQsFAAOCAQEAd35UR5NssE6c3AFH H3ZUnfJClMGU+Hu0aIL+bWZFaOG937ptFaFssHme15nZEX6E6fFjfJIlw/7MAhph uaMpWRjC8dLXhNyNKC61bpHZaGU3Wrmz1fTRH7LsKw/hUDBy9wRwaCawYUdESdBi MYFT+sw6e6E7dNrCO3tdnCPeaZJR/P+Neur9smhfOD0i9qZK16CIlwZU/brcuTpp JYmZDoGCyGNch5i/cAgKiSChF2MxJnuvs4PznLZ+ZFIIv6N01Qwm9iV8ucsnV4h/ rxy1mQhK/cK07HpA6oCs6IiEM1OrkK+8vOpviP6o+cdjo3QsCzdckDmthYJq6eqn 4VXC3Q== -----END CERTIFICATE----- subject=/OU=GT83551982/OU=See www.rapidssl.com/resources/cps (c)14/OU=Domain Control Validated - RapidSSL(R)/CN=*.filemail.com issuer=/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3 --- No client certificate CA names sent Server Temp Key: ECDH,P-521,521 bits --- SSL handshake has read 2834 bytes and written 338 bytes Verification error: unable to get issuer certificate --- New,SSLv3,Cipher is ECDHE-RSA-AES256-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1 Cipher : ECDHE-RSA-AES256-SHA Session-ID: 27390000AF3638FDEA75DDF52B9D937F290593304123134062F049306BBDE87F Session-ID-ctx: Master-Key: E8E2613F6267C705CA82EEE4C8A992880A2ABDA9E8D477A10C952764B1F4DD3D39244D3F0AD915B8FEB7E5FA1E8D55FD PSK identity: None PSK identity hint: None SRP username: None Start Time: 1473889933 Timeout : 7200 (sec) Verify return code: 2 (unable to get issuer certificate) Extended master secret: yes ----