Mono.Security.Protocol.Tls.TlsExceptionを回避する

提供: MonoBook
移動: 案内検索

FreeBSD上のMonoCoreTweetを使用したところ以下のようなエラーが出た。

Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff80092012
  at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0 
  at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0 
  at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0 
  at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
  at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0 
  at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0 
 

CoreTweet内部で使っているHttpWebRequestがSSLをうまく処理できていないようだ。 mozrootsというツールを使えば治るなどと海外フォーラムでは書かれていたが治る気配はなかった。

解決策1[編集]

HttpWebRequestを使う前に以下のコードを挿入してSSL証明書の整合性チェックを上書きし、常にtrueを返すようにして強行突破する。 強行突破とは何事かという感じだが知らんがな。

ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, errors) => true;

関連項目[編集]

参考文献[編集]