unity editor 使用 aws s3 sdk

在Unity中使用AWS SDK的S3组件时遇到连接失败的问题,错误信息显示认证或解密失败。通过设置ServicePointManager的ServerCertificateValidationCallback属性来验证证书并解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在unity Editor 编码配套工具时使用到aws 的 s3。在.net 平台下充分测试后 将代码转至unity 中发现 无法与服务器连上

环境: unity 5.1.3f

awsDll  :awssdk.core.3.3.17.9 和 awssdk.s3.3.3.11


捕获异常时发现


System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): 
SendFailure 
---> 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.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in <filename unknown>:0 
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in <filename unknown>: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 <filename unknown>:0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
 --- End of inner exception stack trace ---
 at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
 --- End of inner exception stack trace ---
 at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename unknown>:0 
at Amazon.Runtime.Internal.HttpRequest.GetResponse () [0x00000] in <filename unknown>:0 "

"  at Amazon.Runtime.Internal.WebExceptionHandler.HandleException (IExecutionContext executionContext, System.Net.WebException exception) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.ExceptionHandler`1[T].Handle (IExecutionContext executionContext, System.Exception exception) [0x00000] in <filename unknown>:0
 at Amazon.Runtime.Internal.ErrorHandler.ProcessException (IExecutionContext executionContext, System.Exception exception) [0x00000] in <filename unknown>:0
 at Amazon.Runtime.Internal.ErrorHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.CallbackHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.Signer.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0
 at Amazon.Runtime.Internal.CredentialsRetriever.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 
 at Amazon.Runtime.Internal.RetryHandler.InvokeSync (IExecutionContext executionContext) [0x00000] in <filename unknown>:0 "


Google 之 使用如下解决方案 

 ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallback;

protected bool CertificateValidationCallback(System.Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            bool isOk = true;
            // If there are errors in the certificate chain,
            // look at each error to determine the cause.
            if (sslPolicyErrors != SslPolicyErrors.None)
            {
                for (int i = 0; i < chain.ChainStatus.Length; i++)
                {
                    if (chain.ChainStatus[i].Status == X509ChainStatusFlags.RevocationStatusUnknown)
                    {
                        continue;
                    }
                    chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
                    chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
                    chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 1, 0);
                    chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
                    bool chainIsValid = chain.Build((X509Certificate2)certificate);
                    if (!chainIsValid)
                    {
                        isOk = false;
                        break;
                    }
                }
            }
            return isOk;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值