[lug] creating client certs for apache

D. Stimits stimits at comcast.net
Thu Sep 8 10:10:32 MDT 2005


...
> using your CA cert you can create end-entity (users/machines/groups)
This is what I want to do. I want to do this in PKCS12 format and 
distribute it to the outside world to specific individuals I trust.

> certs with unique identifying info in the DN (Country, State,
> Locality(city), Organization, Organizational Unit,
> Common Name (e.g. person name, host name, group name),
> and some other parts.

Yes, I was basically hoping to create a public key I could hand out that 
identifies the person as belonging to a given svn project (and thus 
given web directory).

...
>   4) Client UA sends its cert to the server when requested
>      during the SSL handshake. The client has access
>      to the private key for its cert so it can encrypt data.
...

Here's where I start running into trouble. Configuring the apache server 
itself does not seem to be a problem, it has some nice comments in the 
ssl config file of mod_ssl. The problem I'm running into is figuring out 
creation of unique public keys to hand out to individuals or groups of 
individuals. The above item #4 leads me to believe I have been looking 
at this from the wrong angle. You say "client has access to the private 
key"...I've been thinking in terms of using the server private key to 
generate multiple unique public keys that I send to people to install in 
their browser; instead the access to private key makes me believe each 
user needs to create a self-signed key pair of their own, and then send 
*their* public key to me to install on the server.

My initial thought: Create one unique public key for a group of people 
to access a project via the server's keys, and send that key to 
outsiders to put in their clients. Then I have to install permissions to 
access a project based on that key which I just sent out (which was 
generated based on a server key). To do the reverse would mean I have to 
get everyone involved to generate their own key pairs, and then get a 
copy of each public key to tell my server to allow that key. This 
probably means a lot of effort to get outside participants to all create 
and secure keys; instead I was hoping to do the key generation from my 
end so all the other people would have to do is import the key to their 
browser. Maybe this is not possible?

Now as far as apache goes, once I have the keys to be accepted, the 
server is not hard to configure. My question is on configuration of the 
mozilla end...mozilla wants a PKCS12 format, which I do not have (and 
which will be needed regardless of whether I'm the one who generates it, 
or if outside individuals generate their own). I assume I have to do a 
conversion to this format, probably based on my cert, and then send that 
out to everyone. My question now is whether this assumption is correct, 
and if so, how do I generate a public key from my server's cert (or from 
the server's private key) in PKCS12 format, such that I can give it a 
name like "Repository X Developer"? Then I could set up apache to allow 
access to repository named "X" if that key is present. I could send out 
a "Repository Y Developer" key as well and give them automatic access to 
the repository named "Y".

D. Stimits, stimits AT comcast DOT net



More information about the LUG mailing list