mydomain.com.crt is an End-Entity certificate and not a CA cert. You need a CA certificate to sign and issue EE certs. CA certs at minimum should have BasicConstraints extension with CA:true and KeyUsage extension with certsign bit set.
So you either need to get a CA cert from GoDaddy or setup a test CA on your own using OpenSSL. GoDaddy, I am sure would not provide you with a CA certificate as that would then empower you to be a legitimate Certification Authority and allow you to issue valid certificates to other users without GoDaddy knowing about it. -Sandeep On Wed, Oct 20, 2010 at 8:50 AM, Ariel <arieldiazberm...@gmail.com> wrote: > On Wed, Oct 20, 2010 at 11:10 AM, sandeep kiran p <sandeepkir...@gmail.com > > wrote: > >> Is *mydomain.com.crt a CA cert? Does it have Basic Constraints with >> CA=true? Does it also have the certsign bit set in the KeyUsage extension? >> * >> * >> * >> *-Sandeep >> * >> >> Hi Sandeep, > > The cert I got from GoDaddy doesn't has "CA=true" and the extensions > doesn't contain 'certsign'. > Here's the output of my cert (I removed some parts of the keys) > > $ openssl x509 -noout -text -in mydomain.com.crt > Certificate: > Data: > Version: 3 (0x2) > Serial Number: > b1:a7:bb:13:d6:89:31 > Signature Algorithm: sha1WithRSAEncryption > Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU= > http://certificates.godaddy.com/repository, CN=Go Daddy Secure > Certification Authority/serialNumber=07912213 > Validity > Not Before: Oct 16 15:57:29 2010 GMT > Not After : Oct 16 15:57:29 2012 GMT > Subject: C=US, ST=State, L=City, O=MyDomain, Inc, OU=MyDomain, > CN=*.mydomain.com > Subject Public Key Info: > Public Key Algorithm: rsaEncryption > RSA Public Key: (2048 bit) > Modulus (2048 bit): > 00:e8:0c:85:83:d1:da:d4:12:fb:32:99:ee:c4:d0: > 7f:53:5d:bd:b9:92:a4:66:09:59:8b:72:21:0b:37: > ....... > 1d:f6:94:eb:ef:42:10:64:a7:3f:5e:5e:1d:ca:9f: > 44:77:6c:47:f5:b6:37:13:96:62:75:cd:d2:71:56: > cf:29 > Exponent: 65537 (0x10001) > X509v3 extensions: > X509v3 Basic Constraints: critical > CA:FALSE > X509v3 Extended Key Usage: > TLS Web Server Authentication, TLS Web Client > Authentication > X509v3 Key Usage: critical > Digital Signature, Key Encipherment > X509v3 CRL Distribution Points: > URI:http://crl.godaddy.com/gds2-0.crl > > X509v3 Certificate Policies: > Policy: 2.16.840.1.114413.1.7.23.2 > CPS: https://certs.godaddy.com/repository/ > > Authority Information Access: > OCSP - URI:http://ocsp.godaddy.com/ > CA Issuers - URI: > http://certificates.godaddy.com/repository/gd_intermediate.crt > > X509v3 Authority Key Identifier: > > keyid:FD:AC:61:32:93:6C:45:D6:E2:EE:85:5F:9A:BA:E7:76:99:68:CC:E7 > > X509v3 Subject Alternative Name: > DNS:*.mydomain.com, DNS:mydomain.com > X509v3 Subject Key Identifier: > 19:A7:0D:CA:B7:50:DF:ED:FC:C6:05:8C:03:5F:CB:64:55:8A:07:01 > Signature Algorithm: sha1WithRSAEncryption > 9a:df:f2:03:98:cc:21:31:a4:2d:d7:8a:73:65:ff:77:fc:55: > f8:9c:e6:56:16:92:4b:e4:c6:08:71:e8:e5:8b:b1:a6:32:3e: > 80:a1:82:e8:b4:8e:ca:49:8e:d4:1d:aa:5d:18:40:00:20:46: > ............... > dc:70:be:5e:03:ab:4f:f0:38:21:3d:f9:34:ce:27:ba:b2:31: > 39:e0:81:f9:06:8e:0c:20:24:80:b6:2c:6b:c9:bb:10:64:c4: > 10:32:47:1e:92:ca:51:63:ab:67:3c:d5:e1:ed:23:06:61:02: > 5b:d2:02:4e > > > > > Seems that my cert is not valid for what I want to do. So what kind of > certificate should I ask to GoDaddy? > > Thanks again, > > - Ariel > > > >> On Wed, Oct 20, 2010 at 5:27 PM, Ariel <arieldiazberm...@gmail.com>wrote: >> >>> 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 >>> >>> >> > -- > Ariel Diaz Bermejo > http://www.linkedin.com/in/adiazbermejo > >