Forum Discussion

Muhammad_Irfan1's avatar
Nov 28, 2014

Client authentication require problem

Currently my client side profile is set to request. The certificate issue to me by CA XXX. CA XXX have a chain of three certificates 2 intermediate and 1 root certificate. I converted those 3 CA certificates into bundle and uploaded in Trust root certificates in client side profile also every user browser have these 3 certificates. When ever user hits F5 VS there is a green lock which shows server authentication.

 

Now client want client authentication. The certificate issued to clients is also issued by the CA xxx. And i have CA xxx chain in my trusted CA bundle so if i set client authentication to required will it work?

 

Please help in this. Just think one is F5 and client is a windows machine. 1. server authentication is currently working 2. client authentication is demanded.

 

21 Replies

  • Please help guys. Each client will have his own certificate issued by the same authority CAxxx and i will have complete chain CAxxx as bundle in my trusted CA will it work? Do i need to put the client certificate as well in the bundle?

     

  • And i have CA xxx chain in my trusted CA bundle so if i set client authentication to required will it work?

     

    yes

     

    Do i need to put the client certificate as well in the bundle?

     

    no

     

    • Muhammad_Irfan1's avatar
      Muhammad_Irfan1
      Icon for Cirrus rankCirrus
      In which format I will have to put certificate in browser? and in which tab, personal tab? The certificate presented by F5 to client is CN=10.50.171.5, During client authentication should the client presenting certificate should also have CN= 10.50.171.5? Can I use that certificate in browser which I am using in F5 client profile? can one certificate be used in all client machines or each client will have an individual ceritificate only issued to him
    • Muhammad_Irfan1's avatar
      Muhammad_Irfan1
      Icon for Cirrus rankCirrus
      I opened a support case, he generated tcpdump and ssl dumps, and he said that looks like the client is not presenting the certificate which F5(server) is requesting.
    • nitass_89166's avatar
      nitass_89166
      Icon for Noctilucent rankNoctilucent
      >In which format I will have to put certificate in browser? normally i use pkcs12 but whatever certificate file format it accepts is fine. >and in which tab, personal tab? yes The certificate presented by F5 to client is CN=10.50.171.5, During client authentication should the client presenting certificate should also have CN= 10.50.171.5? cn should be different (they authenticate different things). >Can I use that certificate in browser which I am using in F5 client profile? of course. >can one certificate be used in all client machines or each client will have an individual ceritificate only issued to him either is okay. >he said that looks like the client is not presenting the certificate which F5(server) is requesting. didn't you set peer-cert-mode to require? by the way, have you seen ssl profile article here? it may be helpful. SSL Profiles by Jason Rahm and John Wagnon https://devcentral.f5.com/s/articles/ssl-profiles-part-1
  • And i have CA xxx chain in my trusted CA bundle so if i set client authentication to required will it work?

     

    yes

     

    Do i need to put the client certificate as well in the bundle?

     

    no

     

    • In which format I will have to put certificate in browser? and in which tab, personal tab? The certificate presented by F5 to client is CN=10.50.171.5, During client authentication should the client presenting certificate should also have CN= 10.50.171.5? Can I use that certificate in browser which I am using in F5 client profile? can one certificate be used in all client machines or each client will have an individual ceritificate only issued to him
    • I opened a support case, he generated tcpdump and ssl dumps, and he said that looks like the client is not presenting the certificate which F5(server) is requesting.
    • nitass's avatar
      nitass
      Icon for Employee rankEmployee
      >In which format I will have to put certificate in browser? normally i use pkcs12 but whatever certificate file format it accepts is fine. >and in which tab, personal tab? yes The certificate presented by F5 to client is CN=10.50.171.5, During client authentication should the client presenting certificate should also have CN= 10.50.171.5? cn should be different (they authenticate different things). >Can I use that certificate in browser which I am using in F5 client profile? of course. >can one certificate be used in all client machines or each client will have an individual ceritificate only issued to him either is okay. >he said that looks like the client is not presenting the certificate which F5(server) is requesting. didn't you set peer-cert-mode to require? by the way, have you seen ssl profile article here? it may be helpful. SSL Profiles by Jason Rahm and John Wagnon   https://devcentral.f5.com/s/articles/ssl-profiles-part-1
  • e.g.

     configuration
    
    root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm virtual bar
    ltm virtual bar {
        destination 172.28.24.10:443
        ip-protocol tcp
        mask 255.255.255.255
        pool foo
        profiles {
            myclientssl {
                context clientside
            }
            tcp { }
        }
        source 0.0.0.0/0
        source-address-translation {
            type automap
        }
        vs-index 3
    }
    root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm profile client-ssl myclientssl
    ltm profile client-ssl myclientssl {
        app-service none
        ca-file chain.crt
        cert-key-chain {
            default {
                cert default.crt
                key default.key
            }
        }
        defaults-from clientssl
        inherit-certkeychain true
        peer-cert-mode require
    }
    
     chain.crt
    
    [root@ve11a:Active:In Sync] certificate_d  perl -n0777e 'map { print "---\n"; open(CMD, "| openssl x509 -noout -subject -issuer");
    print CMD; close(CMD) } /^-----BEGIN.*?^-----END.*?\n/gsm' :Common:chain.crt_39032_1
    ---
    subject= /C=US/ST=WA/O=Acme/OU=Support/CN=ca2013.acme.com
    issuer= /C=US/ST=WA/L=Seattle/O=Acme/OU=IT/CN=caroot.acme.com
    ---
    subject= /C=US/ST=WA/L=Seattle/O=Acme/OU=IT/CN=caroot.acme.com
    issuer= /C=US/ST=WA/L=Seattle/O=Acme/OU=IT/CN=caroot.acme.com
    
     client certificate
    
    [root@centos1 ca2013] perl -n0777e 'map { print "---\n"; open(CMD, "| openssl x509 -noout -subject -issuer");
    print CMD; close(CMD) } /^-----BEGIN.*?^-----END.*?\n/gsm' certs/client2.crt
    ---
    subject= /C=US/ST=WA/O=Acme/OU=IT/CN=client.acme.com
    issuer= /C=US/ST=WA/O=Acme/OU=Support/CN=ca2013.acme.com
    
     test1 without client certificate
    
    [root@centos1 ca2013] curl -Ik /">https://172.28.24.10//
    curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
    
     test2 with client certificate
    
    [root@centos1 ca2013] curl -Ik /">https://172.28.24.10// --cert certs/client2.crt --key private/client2.key
    HTTP/1.1 200 OK
    Date: Sat, 29 Nov 2014 14:57:20 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Sun, 09 Feb 2014 08:39:51 GMT
    ETag: "41879c-59-2a9c23c0"
    Accept-Ranges: bytes
    Content-Length: 89
    Content-Type: text/html; charset=UTF-8
    
    
    • Muhammad_Irfan1's avatar
      Muhammad_Irfan1
      Icon for Cirrus rankCirrus
      ltm profile client-ssl Siebel-Client { app-service none authenticate once authenticate-depth 4 ca-file CHecking.crt cert Siebel-SSL-CA1.crt chain CHecking.crt client-cert-ca CHecking.crt crl-file none defaults-from clientssl key Siebel-SSL-CA1.key peer-cert-mode request retain-certificate true } This is my client side profile. If changed to require hand shake fails. Checking bundle contains 2 intermediate and 1 root certificate.
  • e.g.

     configuration
    
    root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm virtual bar
    ltm virtual bar {
        destination 172.28.24.10:443
        ip-protocol tcp
        mask 255.255.255.255
        pool foo
        profiles {
            myclientssl {
                context clientside
            }
            tcp { }
        }
        source 0.0.0.0/0
        source-address-translation {
            type automap
        }
        vs-index 3
    }
    root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm profile client-ssl myclientssl
    ltm profile client-ssl myclientssl {
        app-service none
        ca-file chain.crt
        cert-key-chain {
            default {
                cert default.crt
                key default.key
            }
        }
        defaults-from clientssl
        inherit-certkeychain true
        peer-cert-mode require
    }
    
     chain.crt
    
    [root@ve11a:Active:In Sync] certificate_d  perl -n0777e 'map { print "---\n"; open(CMD, "| openssl x509 -noout -subject -issuer");
    print CMD; close(CMD) } /^-----BEGIN.*?^-----END.*?\n/gsm' :Common:chain.crt_39032_1
    ---
    subject= /C=US/ST=WA/O=Acme/OU=Support/CN=ca2013.acme.com
    issuer= /C=US/ST=WA/L=Seattle/O=Acme/OU=IT/CN=caroot.acme.com
    ---
    subject= /C=US/ST=WA/L=Seattle/O=Acme/OU=IT/CN=caroot.acme.com
    issuer= /C=US/ST=WA/L=Seattle/O=Acme/OU=IT/CN=caroot.acme.com
    
     client certificate
    
    [root@centos1 ca2013] perl -n0777e 'map { print "---\n"; open(CMD, "| openssl x509 -noout -subject -issuer");
    print CMD; close(CMD) } /^-----BEGIN.*?^-----END.*?\n/gsm' certs/client2.crt
    ---
    subject= /C=US/ST=WA/O=Acme/OU=IT/CN=client.acme.com
    issuer= /C=US/ST=WA/O=Acme/OU=Support/CN=ca2013.acme.com
    
     test1 without client certificate
    
    [root@centos1 ca2013] curl -Ik /">https://172.28.24.10//
    curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
    
     test2 with client certificate
    
    [root@centos1 ca2013] curl -Ik /">https://172.28.24.10// --cert certs/client2.crt --key private/client2.key
    HTTP/1.1 200 OK
    Date: Sat, 29 Nov 2014 14:57:20 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Sun, 09 Feb 2014 08:39:51 GMT
    ETag: "41879c-59-2a9c23c0"
    Accept-Ranges: bytes
    Content-Length: 89
    Content-Type: text/html; charset=UTF-8
    
    
    • ltm profile client-ssl Siebel-Client { app-service none authenticate once authenticate-depth 4 ca-file CHecking.crt cert Siebel-SSL-CA1.crt chain CHecking.crt client-cert-ca CHecking.crt crl-file none defaults-from clientssl key Siebel-SSL-CA1.key peer-cert-mode request retain-certificate true } This is my client side profile. If changed to require hand shake fails. Checking bundle contains 2 intermediate and 1 root certificate.