I've got an SSL certificate from the 3rd party certificate authority. It's a .cer
file. The certificate is installed and working properly in IIS7.
The certificate displays its Intended Purposes as Server Authentication, Client Authentication.
The site requires authentication via client certificates. We're not using client certificate mapping, but simply using client certificates as a measure of authentication -- if you have one, you're authenticated.
- How can I create a client certificate?
- Does the CA have to do this, involving another CSR?
- Is this something I can do myself with another tool? (OpenSSL or other)
- What format is required for client certificates?
Client certificate authentication in IIS (or most HTTPDs) is somewhat complicated. You have to map the users to the certificate. The certificates themselves can be issued by any CA that the server trusts; you can setup an AD CS instance to issue the certs, or even use a local copy of OpenSSL to create the certs if you wanted.
There's an article on IIS.net describing Client Certificate Mapping; with information about enabling it and programmatically associating certificates with users.
Edit:
The ultra-short version of issuing client certs with OpenSSL.
openssl genrsa -des3 -out my_ca.key 4096
openssl req -new -key my_ca.key -out my_ca.csr
openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
You now have a CA certificate and key.
openssl genrsa -des3 -out client1.key 1024
openssl req -new -key client1.key -out client1.csr
Edit your openssl.cnf file and fill in the relevant CA parts. They are:
Sign the key using the CA cert
openssl ca -in client1.csr -out client1.crt
openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
Note that this is a poor way to issue signed certificates because it simply grants whatever type of certificate the CSR specified. Be sure to pay attention to what you're doing. If you're going to issue a lot of certificates you'll need to invest some time in a more secure setup.