Hi Willy,

I sense we are not going to agree on this, but I'm posting my two cents
here anyway.



> I think that the statement in the doc is clear enough about this.

The statement in the doc is very clear and does not leave room for
interpretation. In fact, it even warns about MITM.

But I'm seeing this more from an operational perspective, considering that
an administrator cannot possibly be aware of everything which is in those
12000 lines of config-documentation. In fact I think its very likely that
in a project - a few months after the initial deployment - such specific
implementation details will be forgotten, but configurations adjustments
may still be necessary. Or the haproxy guy may be on vacation and someone
else has to implement a new backend "on-the-fly", etc.

In the end, my opinion is that when reading the configuration there should
be no chance that the user mistakenly assumes the configuration is
"secure", while its not even though he is not fully aware of the
documentation. We should not "fool" the user when it comes to such things.


Considering all this, instead of changing the default, I would rather simply
require the verify keyword when ssl is used on the backend and remove the
default completely.

So we:
- force the user to configure the verify keyword (even if its set to none),
  so their are no doubts about the behavior when reviewing the configuration
- otherwise abort at config parser level instructing the user what to do



> Yes but most users of this will in fact just wantto recipher when connecting
> to the local server haproxy was installed in front of because they don't know
> how to make it accept non-ssl connections. And that's a fairly common case
> with certain products or commercial applications. For example some 
> applications
> will automatically build "https://"; links only if the connection was accepted
> over SSL. Then in this case, SSL is used as HTTP, but provides additional
> connectivity.

This is true, of course. But at the same time I'm sure there are a lot of
users deploying HAProxy in the cloud, where they barely know in what country
the VM/instance is spawned, not to mention how many NSA/GCHQ listening
stations their backend traffic passes :). Backend traffic isn't exclusively
going through the company-owned Top-of-Rack switch anymore. Too many players
are involved in cloud-based environments.



> Since "verify" would not work without a "cafile" setting, it would be quite
> annoying.

Yes, we would annoy the user. But I think the approach with making the
verify keyword a required configuration statement on ssl-enabled backends
is something we can put the user up with. We can abort with a very clear
error message, like:
Backend server with ssl keyworkd, but missing verify [none|required] statement.


The user already sees this at config check time and I believe the frustration
and the time to configure "verify none" after such a change would be limited
and acceptable, considering that the alternative is a false suggestion of
security.



Regards,

Lukas                                     

Reply via email to