我正在使用通过SSL使用Google服务的应用。但是,在尝试连接时,我得到以下异常。
System.Net.WebException: Error: TrustFailure (The authentication or decryption has failed.) ---> System.IO.IOException: The authentication or decryption has failed. ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (System.IAsyncResult asyncResult) [0x0003a] in /build/mono/src/mono-4.6.1/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs:430
我在Arch Linux上运行Mono 4.6.1版。通过https连接到google.com,Chrome和Firefox都没有问题。
我已按照steps here确保Mono的证书存储与我的系统证书存储同步。我确保安装了ca-certificates
,然后我同时运行了cert-sync /etc/ssl/certs/ca-certificates.crt
和mozroots --import
。然后,我尝试使用tlstest.exe
工具测试与各种网站的SSL连接。除了google.com之外,它还成功连接到我能想到的每个网站。这包括github.com,arstechnica.com,stackoverflow.com,nuget.org。
以下是Google的情况。
$ mono tlstest.exe https://google.com
https://google.com
[Subject]
CN=*.google.com, O=Google Inc, L=Mountain View, S=California, C=US
[Issuer]
CN=Google Internet Authority G2, O=Google Inc, C=US
[Not Before]
2/1/2017 5:47:18 AM
[Not After]
4/26/2017 6:21:00 AM
[Thumbprint]
B2F9FF2ECD53E370B4401F00AFB7CC44F407A8CA
Valid From: 2/1/2017 5:47:18 AM
Valid Until: 4/26/2017 6:21:00 AM
Error #-2146762486: CERT_E_CHAINING 0x800B010A
我不知道此时该做什么。