[openstack-dev] [Neutron][LBaaS] SSL re-encryption scenario question
Stephen Balukoff
sbalukoff at bluebox.net
Sat Apr 19 04:06:44 UTC 2014
Hi y'all!
Carlos: When I say 'client cert' I'm talking about the certificate / key
combination the load balancer will be using to initiate the SSL connection
to the back-end server. The implication here is that if the back-end server
doesn't like the client cert, it will reject the connection (as being not
from a trusted source). By 'CA cert' I'm talking about the certificate
(sans key) that the load balancer will be using the authenticate the
back-end server. If the back-end server's "server certificate" isn't signed
by the CA, then the load balancer should reject the connection.
Of course, the use of a client cert or CA cert on the load balancer should
be optional: As Clint pointed out, for some users, just using SSL without
doing any particular authentication (on either the part of the load
balancer or back-end) is going to be good enough.
Anyway, the case for supporting re-encryption on the load-balancers has
been solidly made, and the API proposal we're making will reflect this
capability. Next question:
When specific client certs / CAs are used for re-encryption, should these
be associated with the pool or member?
I could see an argument for either case:
*Pool* (ie. one client cert / CA cert will be used for all members in a
pool):
* Consistency of back-end nodes within a pool is probably both extremely
common, and a best practice. It's likely all will be accessed the same way.
* Less flexible than certs associated with members, but also less
complicated config.
* For CA certs, assumes user knows how to manage their own PKI using a CA.
*Member* (ie. load balancer will potentially use a different client cert /
CA cert for each member individually):
* Customers will sometimes run with inconsistent back-end nodes (eg.
"local" nodes in a pool treated differently than "remote" nodes in a pool).
* More flexible than certs associated with members, more complicated
configuration.
* If back-end certs are all individually self-signed (ie. no single CA used
for all nodes), then certs must be associated with members.
What are people seeing "in the wild"? Are your users using
inconsistently-signed or per-node self-signed certs in a single pool?
Thanks,
Stephen
On Fri, Apr 18, 2014 at 5:56 PM, Carlos Garza <carlos.garza at rackspace.com>wrote:
>
> On Apr 18, 2014, at 12:36 PM, Stephen Balukoff <sbalukoff at bluebox.net>
> wrote:
>
> Dang. I was hoping this wasn't the case. (I personally think it's a
> little silly not to trust your service provider to secure a network when
> they have root access to all the machines powering your cloud... but I
> digress.)
>
> Part of the reason I was hoping this wasn't the case, isn't just because
> it consumes a lot more CPU on the load balancers, but because now we
> potentially have to manage client certificates and CA certificates (for
> authenticating from the proxy to back-end app servers). And we also have to
> decide whether we allow the proxy to use a different client cert / CA per
> pool, or per member.
>
>
> If you choose to support re-encryption on your service then you are
> free to charge for the extra CPU cycles. I'm convinced re-encryption and
> SslTermination is general needs to be mandatory but I think the API should
> allow them to be specified.
>
> Yes, I realize one could potentially use no client cert or CA (ie.
> encryption but no auth)... but that actually provides almost no extra
> security over the unencrypted case: If you can sniff the traffic between
> proxy and back-end server, it's not much more of a stretch to assume you
> can figure out how to be a man-in-the-middle.
>
>
> Yes but considering you have no problem advocating pure ssl
> termination for your customers(Decryption on the front end and plain text)
> on the back end I'm actually surprised this disturbs you. I would recommend
> users use Straight SSL passthrough or re-enecryption but I wouldn't force
> this on them should they choose naked encryption with no checking.
>
>
> Do any of you have a use case where some back-end members require SSL
> authentication from the proxy and some don't? (Again, deciding whether
> client cert / CA usage should attach to a "pool" or to a "member.")
>
>
> When you say client Cert are you referring to the end users X509
> Certificate (To be rejected by the backend server)or are you referring to
> the back end servers X509Certificate which the loadbalancer would reject if
> it discovered the back end server had a bad signature or mismatched key? I
> am speaking of the case where the user wants re-encryption but wants to be
> able to install CA certificates that sign backend servers Keys via PKIX
> path building. I would even like to offer the customer the ability to skip
> hostname validation since not every one wants to expose DNS entries for IPs
> that are not publicly routable anyways. Unless your suggesting that we
> should force this on the user which likewise forces us to host a name
> server that maps hosts to the X509s subject CN fields. Users should be
> free to validate back end hostnames, just the subject name and key or no
> validation at all. It should be up to them.
>
>
>
>
> It's a bit of a rabbit hole, eh.
>
> Stephen
>
>
>
> On Fri, Apr 18, 2014 at 10:21 AM, Eichberger, German <
> german.eichberger at hp.com> wrote:
>
>> Hi Stephen,
>>
>>
>>
>> The use case is that the Load Balancer needs to look at the HTTP requests
>> be it to add an X-Forward field or change the timeout – but the network
>> between the load balancer and the nodes is not completely private and the
>> sensitive information needs to be again transmitted encrypted. This is
>> admittedly an edge case but we had to implement a similar scheme for HP
>> Cloud’s swift storage.
>>
>>
>>
>> German
>>
>>
>>
>> *From:* Stephen Balukoff [mailto:sbalukoff at bluebox.net]
>> *Sent:* Friday, April 18, 2014 8:22 AM
>>
>> *To:* OpenStack Development Mailing List (not for usage questions)
>> *Subject:* [openstack-dev] [Neutron][LBaaS] SSL re-encryption scenario
>> question
>>
>>
>>
>> Howdy, folks!
>>
>>
>>
>> Could someone explain to me the SSL usage scenario where it makes sense
>> to re-encrypt traffic traffic destined for members of a back-end pool? SSL
>> termination on the load balancer makes sense to me, but I'm having trouble
>> understanding why one would be concerned about then re-encrypting the
>> traffic headed toward a back-end app server. (Why not just use straight TCP
>> load balancing in this case, and save the CPU cycles on the load balancer?)
>>
>>
>>
>> We terminate a lot of SSL connections on our load balancers, but have yet
>> to have a customer use this kind of functionality. (We've had a few ask
>> about it, usually because they didn't understand what a load balancer is
>> supposed to do-- and with a bit of explanation they went either with SSL
>> termination on the load balancer + clear text on the back-end, or just
>> straight TCP load balancing.)
>>
>>
>>
>> Thanks,
>>
>> Stephen
>>
>>
>>
>>
>> --
>> Stephen Balukoff
>> Blue Box Group, LLC
>> (800)613-4305 x807
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
>
> --
> Stephen Balukoff
> Blue Box Group, LLC
> (800)613-4305 x807
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
--
Stephen Balukoff
Blue Box Group, LLC
(800)613-4305 x807
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140418/89c112bf/attachment.html>
More information about the OpenStack-dev
mailing list