Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
This question was closed Mar 21, 2018 at 05:58 PM by EclecticSteve for the following reason:

The question is answered, right answer was accepted

avatar image
0
Question by EclecticSteve · Mar 14, 2018 at 04:10 PM · monodevelopwebrequestcertificate

Unable to call web data ("TlsException: The server stopped the handshake")

Any help is appreciated here, as this bug is breaking my game :(


I'm trying to call a web JSON API to fill some text in my UI. I'm using the code below to get the raw JSON. Up until now it worked like a charm, but now it's broken and throws a handshake error ("TlsException: The server stopped the handshake"). I did not recently make any changes to this script, and it had been working for a good while.


I believe this is an issue with Mono not trusting the certificate for this website, but after some extensive trial-and-error googling I'm still not exactly sure how to fix it. Please note that I copied and pasted the majority of this code from another question on the forums - I am not at all an expert on certificate validation.


Thank you in advance for your help :)

     public static string webData;
     public Text myText;
 
     void Start () {
         ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback;
         System.Net.WebClient wc = new System.Net.WebClient();
         byte[] raw = wc.DownloadData("https://opentdb.com/api.php?amount=1&type=multiple");
         webData = System.Text.Encoding.UTF8.GetString(raw);
     }
 
     public bool MyRemoteCertificateValidationCallback(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) {
                     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;
                     }
                 }
             }
         }
         return isOk;
     }
 }





Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

  • Sort: 
avatar image
0

Answer by goddatr · Mar 21, 2018 at 03:25 PM

Maybe try adding this before overriding the ServerCertificateValidationCallback

 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image EclecticSteve · Mar 21, 2018 at 05:57 PM 0
Share

Thanks for your help, goddatr. I tried this and received the following error:

C:\Unity\Trivial Combat _CURRENT\Trivial Combat 1.11\Assets\Setup Scripts\WebCall.cs(101,101): Error CS0117: 'System.Net.SecurityProtocolType' does not contain a definition for 'Tls11' (CS0117) (Assembly-CSharp)

At any rate, I've decided to go another route and set up a local database through SQLite. So I'm going to go ahead and close this question.

Follow this Question

Answers Answers and Comments

129 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Provide x509 client certificate in request 0 Answers

www request Error unity 2018 0 Answers

I have this Drag script it works fine but i want it so when you click and drag it follows the mouse like a trail instead of being underneath it, can someone help me please thanks. 0 Answers

Copy and Pasted code for Trajectory and got one parsing error... 1 Answer

Attach to process never shows my device 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges