[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] [PATCH] Add sample/https-client.c, an example of stacking evhttp as a client on top of bufferevent_ssl.



On Wed, Feb 20, 2013 at 10:26 PM, Jardel Weyrich <jweyrich@xxxxxxxxx> wrote:
> On Wed, Feb 20, 2013 at 9:03 PM, Nick Mathewson <nickm@xxxxxxxxxxxxx> wrote:
>>
>> On Wed, Feb 20, 2013 at 12:42 PM, Catalin Patulea <catalinp@xxxxxxxxxx>
>> wrote:
>> > On Tue, Feb 19, 2013 at 9:40 PM, Jardel Weyrich <jweyrich@xxxxxxxxx>
>> > wrote:
>> >> 2) Call SSL_CTX_load_verify_locations passing the path of the CA
>> >> certificates installed by the aforementioned package - generally
>> >> /etc/ssl/certs/ca-certificates.crt
>> > Nick, does this seem like a reasonable solution?
>> >
>> > SSL_CTX_load_verify_locations(ssl_ctx,
>> > "/etc/ssl/certs/ca-certificates.crt", NULL);
>>
>> Seems like it could work fine for an initial attempt.  Of course, it
>> needs to check for errors and report them if they occur.
>
>
> Even though libevent cannot assume that file exists - it would have to ship
> it, or an alternative to it.

Yeah.

> Are we talking about the test case?

This is for a new entry in samples/, which is supposed to be sample
"how to use libevent" code.

> If yes, another option would be to
> generate some certificates - 2 CAs, plus 2 certs per CA (1 valid, 1
> expired), and 2 extra self-signed certs. It's likely that more certs are
> needed to cover all possible scenarios. Lengthy work, but can be done.
>
> With this in mind, will libevent try to cover all possibilities in a test
> case?

It might be a good idea to have a test case for all of this too.

>> Also, in addition to this and SSL_verify, I think you may need to call
>> SSL_get_certificate_status() [or whatever it's called] and
>> SSL_get_peer_certificate() in some combination,
>
>
> By SSL_get_certificate_status, do you mean checking whether the certificate
> is valid (not expired, not revoked, etc)?

Ah, yeah. You need to check the validity dates too. :/

But what I meant was the SSL_get_verify result function.

>> and check that the
>> hostname in the cert matches the hostname you're trying to connect to
>> -- unless *think* openssl does this for you?
>
>
> There's X509_check_host for that, but I'm really not sure whether it's
> enough or not.
> Might be a good idea to check how Chromium does that.

I thought Chromium used NSS?

   [...]
> AFAIK, it has no callback support for this kind of "automatic error
> reporting", except for SSL_set_info_callback, which sets a callback to
> report errors and state changes for a given SSL connection. FWIW, Tor uses
> it (see src/common/tortls.c).

Yeah, I wrote that code.  I wouldn't recommend SSL_set_info_callback,
though: it is a huge can of worms.

-- 
Nick
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.