/ Zope / Apsis / Pound Mailing List / Archive / 2011 / 2011-03 / Using Private Key for Client Auth with Pound

[ << ] [ >> ]

[ arguments / Adrian padilla ... ] [ URL match to go to a Backend - how? / Pound ... ]

Using Private Key for Client Auth with Pound
Pound Rproxy <poundrproxy(at)yahoo.com>
2011-03-12 10:18:20 [ FULL ]
I currently have a server that has a self-signed SSL cert and viewing it is 
restricted by using a private key that's been exported to Firefox.
I want to put Pound in front of this and 1 other server, so that both are using

the same https listener in pound.cfg and the same private key on the client end

for restricting access.
  
My confusion is mostly around where to generate the server.pem for Pound.
Do I generate the server.pem and private browser key on the pound server or 
import the server.pem from a backend server?
If the second option, does this mean I can only have one SSL backend per Pound 
instance?

I'm just at point of testing now (creating keys takes me a while) and have 
created a new CA, self-signed cert, pem file, and private key on the Pound 
server.
I have commented out all SSL stuff in the Apache httpd.conf files on both 
backend servers so now they should just pass http requests back to Pound.
I've tested that each backend resolves with http and without need for a private

key, as I want Pound to handle this.
But I can't get Pound to resolve the backends. Am I doing something wrong or 
that isn't possible?

Here's my pound.cfg so far:

ListenHTTPS
        Address  192.168.1.140
                Port    443
                Cert "/usr/etc/server.pem"
                LogLevel 2

    Service
        BackEnd
                Address 192.168.1.141
                Port 8080
        End
    End
    
    Service
        BackEnd
                Address 192.168.1.142
                Port 8083
        End
    End    
    
End
Attachments:  
text.html text/html 2691 Bytes

Re: [Pound Mailing List] Using Private Key for Client Auth with Pound
Dave Steinberg <dave(at)redterror.net>
2011-03-12 16:01:46 [ FULL ]
On 3/12/2011 4:18 AM, Pound Rproxy wrote:[...]

It doesn't matter where they are generated.  A PEM file is just a 
private key + certificate, you can make it anywhere.
[...]

You can have many ListenHTTPS directives per pound instance, it has 
nothing to do with the certificates used.
[...]

Your config looks fine.  What happens when you hit it, specifically?

Regards,[...]

Re: [Pound Mailing List] Using Private Key for Client Auth with Pound
Pound Rproxy <poundrproxy(at)yahoo.com>
2011-03-13 05:55:34 [ FULL ]
Thanks Dave,

I found my prob (not pound ;-) and things are _partly_ working now -
https is working for the first server (lets ignore the second server =)   
__but__   it doesn't care if I use a private key or not - so anyone can see the

self-signed cert, accept it, and visit the site behind it.
I'm not sure how to configure pound to check for a private key in the users 
browser.
Before I created the single pem file (from .crt and .key) to use on pound, the 
machine with the self-signed cert was only visible to client browsers with a 
private key.
This access restriction was created in the apache httpd.conf file with the 
following:

<Directory />
...normal stuff...
<IfDefine SSL>
    SSLRequireSSL
    SSLRequire           %{SSL_CLIENT_S_DN_O}  req "CompanyName" and
    %{SSL_CLIENT_S_DN_OU} in {"CompanyDept"}
</IfDefine>
</Directory>

and:

SSLEngine On
SSL Cert dirs... 
---->   SSLVerifyClient require
etc

The only way I can image doing the same now, would be to run apache on the same

server as pound, but I don't want that, and I doubt this would stick for
backend 
servers I want pound to redirect to.
Perhaps I should still enable ssl eg 'SSLVerifyClient require' etc on apache on

the first backend 141? This is the server that did this before I tried pound.
The only other option I see is to create the PEM on 141 and move it to the
pound 
server, but again, where does pound require the private key to access the 
self-signed cert and backends?
My goal in using pound is to have one pem file on it, and direct a few 
restricted users each with a private key to backend servers, all viewed in 
https.

Please keep the suggestions coming, I'm slowing learning here! :D





[...]
Attachments:  
text.html text/html 6125 Bytes

Re: [Pound Mailing List] Using Private Key for Client Auth with Pound
Pound Rproxy <poundrproxy(at)yahoo.com>
2011-03-13 13:12:20 [ FULL ]
Hi Dave,

Scratch my last email - I found: ClientCert.

I use:
ClientCert 2 2
to force using a client cert and 2 deep (hopefully mirroring 'SSLVerifyDepth 
2' 
that I had in 141's apache httpd.conf before moving ssl to pound).

This gives me the error:
Peer does not recognize and trust the CA that issued your certificate.
(Error code: ssl_error_unknown_ca_alert)

So I'm on the right track but it looks like I need to include CAlist and 
VerifyList.
I read about (and hopefully understood) the difference between these but my 
trouble begins when trying understand how to correctly create them.

For VerifyList, I:
openssl x509 -in my_CA.crt -out my_CA.pem

For CAlist, I:
cat my_CA.pem > my_CA_list.pem

These are accepted by pound, but now the browser error I get is:
The connection to the server was reset while the page was loading.

I think I have the VerifyList pem made properly, but I'm unsure if the CAlist
is 
really just a copy of my_CA.pem (if only one CA is listed as in my situation).

Where may I be going wrong above?


[...]
Attachments:  
text.html text/html 7999 Bytes

Re: [Pound Mailing List] Using Private Key for Client Auth with Pound
Pound Rproxy <poundrproxy(at)yahoo.com>
2011-03-14 00:26:42 [ FULL ]
And... 
now scratch my last email too as I found I was using an old client cert! LOL 
(Slaps forehead!)

All is working perfectly now, though I wish I could use the following that I
had 
in Apache's httpd.conf:

<IfDefine SSL>
    SSLRequireSSL
    SSLRequire           %{SSL_CLIENT_S_DN_O}  req "CompanyName" and
    %{SSL_CLIENT_S_DN_OU} in {"CompanyDept"}
</IfDefine>

It added another level of security in checking the uniqueness of client certs.

But I'm waaay impressed by Pound and what it can do - client cert auth handled 
by Pound is so cool and saves me so much fuss with backend auths. :D

(Now to post another email asking how to redirect in the way I need to the 
second backend without changing the docroot on that server. =)

Thanks!



[...]
Attachments:  
text.html text/html 9612 Bytes

MailBoxer