On Fri, Jan 08, 2016 at 10:23:25AM -0800, Peter Eckersley wrote:
> On Fri, Jan 08, 2016 at 06:27:09PM +0100, Peter Wu wrote:
>  
> > Peter (Eckersley), you reported this concern with the premise that it is
> > a common configuration mistake that impacts many hosting providers. Do
> > you have scans backing up that concern? Websites that are managed by a
> > single entity (i.e. not shared hosting providers) with this
> > configuration "mistake' are not a problem.
> 
> I haven't spent the time to conduct a thorough scan to get numbers, but
> this type of configuration is very easy and natural to create, and manually
> examining the https:// responses of a handful of Alexa top 100K domains
> (starting in the middle of the list, not the top) showed a tremendous
> diversity of strange behaviours for domains where https:// has not been
> officially deployed.
> 
> If someone wants to do a scan to try to characterise all of those
> behaviours, go for it!

I'll give it a go. Currently thinking of a scanning sites 1k-2k from the
Alexa list, testing port 80 (host: domain, host: ip, host:
surelyinvalid.example.com and no host header), port 443 (no SNI, and SNI
with + Host header like used for port 80). Then I'll try to store a pcap
so all responses can fully be analyzed.

Are there other things that should be checked as well?

On Fri, Jan 08, 2016 at 11:56:39AM -0800, Peter Eckersley wrote:
> On Fri, Jan 08, 2016 at 08:42:57PM +0100, Niklas Keller wrote:
> > > The current language describing it in the spec is terrible and needs to
> > > be rewritten, but it's quite simple: add an extra :443 vhost entry to
> > > your server config, serving a self-signed cert created to pass the
> > > challenge.
> > 
> > 
> > Unfortunately, this requires a server configuration reload. http-01 is
> > still a lot easier, it doesn't require any configuration change. I think
> > it's best to allow http-01 over HTTPS on port 443 if port 80 is not
> > reachable. This should eliminate the vulnerability, but allow verifying
> > HTTPS-only sites with http-01.
> 
> That's pretty corner case-y behaviour for a very specialised use case
> (server *must* have port 80 firewalled, and cannot possibly perform a
> graceful server reload).  Are there other voices in favour of special
> casing DV behaviour for that use case?

Trying port 443 after port 80 is unreachable is a workaround and
probably too specific. If a configuration issue like the default vhost
is a concern, then I would like to suggest validating the subject CN or
SANs of the returned certificate even if self-signed or expired.
(This modification, but also the existing http-01 validation, seems
vulnerable to a MitM attack where the attacker controlling the network
can cause false validations, but is not the topic of this mail.)


In my last mail, I meant to say "not possible with http-01". I am using
the simp_le ACME client with Let's Encrypt and encountered this
limitation when trying it at home. The following scenarios assume that a
webserver is already running a live website.

An advantage of the http-01 method over tls-sni-01 is that a webserver
can delegate the validation by proxying the request or by pointing to a
specific directory on the filesystem. Both approaches work with an
unprivileged ACME client.

The SNI method requires that an ACME client can modify the webserver
configuration (add a new vhost + cert) and reload it. It cannot be
delegated via proxying because the server needs to parse the Client
Hello first.

In short, http-01 operates on a level below TLS and is more flexible
than tls-sni-01 and allows delegation of certificate validation.
-- 
Kind regards,
Peter Wu
https://lekensteyn.nl

_______________________________________________
Acme mailing list
Acme@ietf.org
https://www.ietf.org/mailman/listinfo/acme

Reply via email to