Hi group
I'm having problems trying to use a certificate I got from GoDaddy (it's a
wildcard cert) to sign client certificates requests and then validate them.
This is my actual environment:
- *mydomain.com.key* --> The private key used to request the GoDaddy's
cert
- *mydomain.com.crt* --> The certificate I got from GoDaddy
- *gd_bundle.crt* --> Bundle file sent by GoDaddy
I concatenated my cert with the bundle one and also with some others I found
at GoDaddy's repository [1] in my attempt to to have a valid chained root
with:
$ cat mydomain.com.crt gd_bundle.crt > combined_1.crt
$ cat mydomain.com.crt godaddy/gd_intermediate.crt > combined_2.crt
$ cat mydomain.com.crt godaddy/gd_cross_intermediate.crt > combined_3.crt
$ cat mydomain.com.crt godaddy/gd-class2-root.crt > combined_4.crt
$ cat mydomain.com.crt godaddy/ca_bundle.crt > combined_5.crt
Here I'm going to reproduce the steps I followed using the openssl command
line tools:
1. Create a client certificate signing request (CSR file), with a private
key, and using as 'Subject' for the cert the same attribute values that our
certificate's Issuer has.
2. Sign the request using my domain's private key and a CA file
(different in each test)
3. Export the client certificate to PKCS#12 format that browsers can
import
4. Verify the client certificate against differents CA certificates
(trying to see if it pass with someone)
So here's the command line steps I used:
# creating the client cert request using as subject the same values our
GoDaddy's cert has
$ openssl req -new -newkey rsa:1024 -nodes -subj '/CN=*.
mydomain.com/O=MyDomain, Inc./OU=MyDomain/C=US/ST=State/L=City' -keyout
test1.key -out test1.csr
Generating a 1024 bit RSA private key
...++++++
.........++++++
writing new private key to 'test1.key'
-----
# signing the csr using the same key used to get GoDaddy's cert
$ openssl x509 -req -days 365 *-CA mydomain.com.crt* -CAkey
mydomain.com.key -CAcreateserial -in test1.csr -out test1.crt
Signature ok
subject=/CN=*.mydomain.com/O=MyDomain,
Inc./OU=MyDomain/C=US/ST=State/L=City
Getting CA Private Key
# exporting the certificate into PCKS#12 (browser format)
$ openssl pkcs12 -export -inkey test1.key -out test1.pfx -in test1.crt
-name "Client Certificate - Test 1"
# Trying to VERIFY the client certificate against different CA files
$ openssl verify -CAfile mydomain.com.crt test1.crt
$ openssl verify -CAfile combined_1.crt test1.crt
$ openssl verify -CAfile combined_2.crt test1.crt
$ openssl verify -CAfile combined_3.crt test1.crt
$ openssl verify -CAfile combined_4.crt test1.crt
$ openssl verify -CAfile combined_5.crt test1.crt
In all the verification process I got the following output:
* test1.crt: /CN=*.mydomain.com/O=MyDomain,
Inc./OU=MyDomain/C=US/ST=State/L=City*
* error 20 at 0 depth lookup:unable to get local issuer certificate*
I run the above steps using different CA files (the combined ones I created)
to sign the requests and I always get the same result :(
What I'm missing here? How can I create and issue client certificates that
can be recognized?
I'd appreciate some light here :)
Thanks,
[1] https://certs.godaddy.com/anonymous/repository.seam
--
Ariel Diaz Bermejo
http://www.linkedin.com/in/adiazbermejo