Forum Discussion

Jake_39981's avatar
Jake_39981
Icon for Nimbostratus rankNimbostratus
Mar 05, 2012

Chain Certificates / Client SSL Profile

We have one Virtual Server and client SSL profile shared by multiple clients coming in. One client is presenting a client cert signed by an intermediary "VeriSign Class 3 Extended Validation SSL CA" (not in ca-bundle). We're designing this in the lab; I followed SOL6401 http://support.f5.com/kb/en-us/solu...caprovided to create the chain cert using their root and intermediary certs to create the chain cert. I used openssl (as shown in SOL6401) to validate the client cert against the chain cert and it checked out perfectly! So it appears this will work for us. However, these are my questions:

 

 

1. When I tell the client ssl profile to use the chain cert, it will not affect other clients connecting with regular signed certs by root authorities found in ca-bundle, right?

 

 

2. If other clients want to use other intermediaries, can I simply append their root and intermediary certs to the same chain cert? We can only choose one chain cert from the drop down in the client SSL profile so I want to be sure this can be done.

 

 

I assume we'll be fine but I'd rather know for sure this will work before moving forward. Thanks!

 

 

  • We have one Virtual Server and client SSL profile shared by multiple clients coming in. One client is presenting a client cert signed by an intermediary "VeriSign Class 3 Extended Validation SSL CA" (not in ca-bundle). We're designing this in the lab; I followed SOL6401 http://support.f5.com/kb/en-us/solu...caprovided to create the chain cert using their root and intermediary certs to create the chain cert. I used openssl (as shown in SOL6401) to validate the client cert against the chain cert and it checked out perfectly! So it appears this will work for us. However, these are my questions:

     

     

    1. When I tell the client ssl profile to use the chain cert, it will not affect other clients connecting with regular signed certs by root authorities found in ca-bundle, right?

     

     

    2. If other clients want to use other intermediaries, can I simply append their root and intermediary certs to the same chain cert? We can only choose one chain cert from the drop down in the client SSL profile so I want to be sure this can be done.

     

     

    I assume we'll be fine but I'd rather know for sure this will work before moving forward. Thanks!

     

     

  • Hi Jake,

     

     

    I think you're correct on both points. The client should check its client cert against each of the intermediate certs in the bundle that TMM sends during the SSL handshake. It would be good to test this to confirm with two client certs signed by different CAs.

     

     

    Aaron
  • I agree with hoolio.

     

     

    I have the same configuration, but I choose to keep the two Verisign intermediate certs in their own bundle. So I created a cert called verisign-intermediate-ca, and imported both the Primary and Secondary intermediary cert into it. I find this easier to manage than appending it into the same cert. That way if I ever need to update the intermediaries, I don't have to touch every SSL cert. Or when I renew an SSL cert, I don't have to worry about including the Intermediary.
  • Thanks, Hoolio and Nick. Our clients share one VIP with one client ssl profile so we can only use one chained cert. So I'll just append intermediaries and roots as clients send them to us to the one chained cert. I did open a case with F5 to validate this configuration and they said it'll work fine.
  • So I came up with another question on this. When an intermediary cert expires, I can append the new cert to the chain cert but how do I remove the old one? The chain is just a bunch of cert hashes with no indication of who they belong to.
  • aw, never mind guys. I checked in the GUI and you can choose each cert inside the chain cert and import, export and delete each one. Sorry, I try to do most everything in the command line. There may be an openssl command for this but I think in this case, the GUI is probably the best way to go for this task.
  • e.g.

    [root@ve1023:Active] config  perl -n0777e 'map { print "---\n"; open(CMD, "| openssl x509 -subject -issuer"); print CMD; close(CMD) } /^-----BEGIN.*?^-----END.*?\n/gsm'
    ' /config/ssl/ssl.crt/ca-bundle.crt
    ---
    subject= /C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root
    issuer= /C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root
    -----BEGIN CERTIFICATE-----
    MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
    VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
    bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
    b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
    UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
    cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
    b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
    iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
    r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
    04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
    GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
    3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
    lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
    -----END CERTIFICATE-----
    ---
    subject= /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting/OU=Certification Services Division/CN=Thawte Personal Freemail CA/emailAddress=personal-freemail@thawte.com
    issuer= /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting/OU=Certification Services Division/CN=Thawte Personal Freemail CA/emailAddress=personal-freemail@thawte.com
    -----BEGIN CERTIFICATE-----
    MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx
    FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD
    VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT
    ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt
    YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu
    Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT
    AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa
    MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp
    b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG
    cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh
    d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY
    DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E
    rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq
    uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN
    BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP
    MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa
    /RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei
    gQ==
    -----END CERTIFICATE-----
    ---
    subject= /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Server CA/emailAddress=server-certs@thawte.com
    issuer= /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Server CA/emailAddress=server-certs@thawte.com
    -----BEGIN CERTIFICATE-----
    MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
    FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
    VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
    biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
    MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
    MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
    DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
    dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
    cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
    DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
    gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
    yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
    L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
    EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
    7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
    QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
    qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
    -----END CERTIFICATE-----
    ...
    

    reference:

    Check certificate chain file by waldner

    http://backreference.org/2010/03/06/check-certificate-chain-file/
  • Hoolio,

    when you say "The client should check its client cert against each of the intermediate certs in the bundle that TMM sends during the SSL handshake"

     

     

     

    When a profile is attached with a 'chain certificate' it will not stop TMM also using the ca-bundle?

     

     

     

    I successfully created a certificate chain for a private Ca issuer, however we still need to issue the requestor with the signed cert, and thus I realised that it would work without having to create a chain cert.

     

    This brings me to, when is a chain certificate required to be built?