Perhaps this in addition to a callback / dialog?

> On 26 Oct. 2016, at 2:43 pm, Charles Warwick <char...@techstrategies.com.au> 
> wrote:
> 
> Monte, Trevor,
> 
> My preference for handling the overriding of HTTPS certificates would be by 
> adding the ability within libUrl to "get" the SSL certificate of a particular 
> site (for example a self-signed one), and then "add" that SSL certificate to 
> a CA store that is utilised by the libUrl library.
> 
> This would allow you to retrieve the SSL certificates for any self-signed 
> sites and add them to the CA store during your application's startup.  Then 
> you can use libUrl as normal (with libUrlSetSSLVerification set to true) and 
> those self-signed sites would be accessible.
> 
> The advantage of this is that it would provide the same benefit that Trevor 
> is looking to achieve while still providing any application with protection 
> from SSL connections being hijacked even if they are using self-signed 
> certificates, rather than completing disregarding the signing identity of 
> communications.
> 
> tsNet currently does allow you to specify a separate CA store than the system 
> one.  If you are writing an application that connects to a server that is 
> self-signed, then you can download the server's certificate and call 
> tsNetCABundle with that certificate file.  This will allow your application 
> to verify that the self-signed certificate is the same as what you downloaded 
> when you make requests against that server.
> 
> It is on my task list to create another function in tsNet that allows you to 
> retrieve the SSL certificates for a specific connection so that you don't 
> have to download them separately.
> 
> As a side note (for anyone that needs this right now), tsNet copies the 
> tsNetVerifySSLPeer (and tsNetCABundle) setting that is current at the time a 
> tsNetGet (or any other tsNet* call) function is called and stores it with the 
> request.   This means you can change those settings at any time and it won't 
> affect any requests already in progress.  So if you want to leave SSL 
> verification on and *just* disable it for one request, you can simply do:
> 
> tsNetVerifySSLPeer false
> tsNetGet(....)
> tsNetVerifySSLPeer true
> 
> Regards,
> 
> Charles
> 
> 
> 
> On 26/10/2016 10:24 AM, Trevor DeVore wrote:
>> On Tue, Oct 25, 2016 at 2:36 PM, Monte Goulding <mo...@appisle.net> wrote:
>> 
>>>> On 26 Oct. 2016, at 3:25 am, Trevor DeVore <li...@mangomultimedia.com>
>>> wrote:
>>>> https://github.com/trevordevore/livecode/commit/
>>> 6a5bc42abebca23e6b8aa611c8f0966b221441c6 <https://github.com/
>>> trevordevore/livecode/commit/6a5bc42abebca23e6b8aa611c8f0966b221441c6>
>>> One thing I might as well say now as I’ll say it in review anyway is it
>>> would be better to set individual hosts rather than the entire list in one
>>> hit to reduce the risk of different user code clobbering each other.
>> 
>> The intended use of libURLGetServersThatBypassCertificateVerification and
>> libURLSetServersThatBypassCertificateVerification is for getting servers to
>> store with your app prefs and for restoring the saved settings when your
>> app starts up. I still need to add a handler that adds to the list.
>> 
>> 
>>> It will also be simpler to use:
>>> 
>>> - get url
>>> - verification failure
>>> - ask user if they want to trust the host anyway
>>> - turn off verification for that host
>>> 
>> In my original implementation in my custom version of libURL I set up a
>> repeat loop around the code that fetches data from the server. My libURL
>>  library allows you to define a callback that would be called if an SSL
>> cert error occurred. I would display a dialog that looks similar to the one
>> you see in Safari and let the user decide. The logic looks like this:
>> 
>> repeat
>>    get url
>>    no errors? exit repeat
>>    did an ssl error occur?
>>       is a callback defined?
>>          send the callback
>>             did user say bypass? add to list of servers that ignore
>> verification and try again in next repeat loop
>>             did user say cancel? exit repeat
>> end repeat
>> 
>> It got the job done for what I needed. I am a little hesitant to add it in
>> to libURL as I’m not entirely sure of the implications of the repeat loop.
>> I was going to start with adding the ability to get/set the servers and add
>> a server to the list. That way a developer could check the result
>> themselves and prompt the user.
>> 
>> Ideally it would all happen from within libURL though. I’m not sure I have
>> the time to think through all of the implications and do the testing
>> necessary to submit the change to libURL.
>> 
>> Thoughts?
>> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to