Forum Discussion
Server-side SSL Failing
Hello everyone
We have a project where we need to provide TLS offload (client-side) and server-side encryption to the back-end web servers. I thought I'd test this out in my lab but seem to be struggling.
I have an Apache2 web server configured to serve HTTPS web pages. The certificate presented by the web server is from my lab PKI. Browsing to the server directly from my PC, bypassing the LTM appears all good. The handshake is successfull. Things appear to work. When I introduce the LTM things fail.
So far I have created a client-side cert and attached this to a client SSL profile then virtual server. I know this works because if I change the backend web server to a plain HTTP, the offload works just fine.
I have imported my two PKI certificates (root/sub) and concatinated them as per sol13302, then installed them. I then attach this chain certificate to the server SSL profile under Configuration > Chain. Then attach the SSL profile to the VS.
Even after all this, I get the following error: 'Secure Connection Failed'. If I use OpenSSL to test I get the following:
[root@:Active:Standalone] tmp openssl s_client -connect red-https-server.lab.com:443
CONNECTED(00000003)
depth=0 C = UK, ST = London, L = London, O = Lab Inc., OU = IT Dept., CN = blue-https-server.lab.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = UK, ST = London, L = London, O = Lab Inc., OU = IT Dept., CN = blue-https-server.lab.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = UK, ST = London, L = London, O = Lab Inc., OU = IT Dept., CN = blue-https-server.lab.com
verify error:num=21:unable to verify the first certificate
verify return:1
I understand the error messages, the LTM clearly cannot verify the identity certificate the web server is presenting. If I change the OpenSSL command to use the chain cert, it works:
[root@:Active:Standalone] tmp openssl s_client -connect red-https-server.lab.com:443 -CAfile /config/filestore/files_d/Common_d/certificate_d/:Common:LAB-CHAIN-CERT.crt_71998_1
CONNECTED(00000003)
depth=2 CN = LAB-ROOT-CA
verify return:1
depth=1 DC = com, DC = lab, CN = LAB-SUB-CA
verify return:1
depth=0 C = UK, ST = London, L = London, O = Lab Inc., OU = IT Dept., CN = blue-https-server.lab.com
verify return:1
Verify return code: 0 (ok)
This is really frustrating me as it seems as if regardless of how I configure the SSL profile the handshake keeps failing.
Anyone have an idea on where I am going wrong?
Thank you
- Kevin_StewartEmployee
By default the BIG-IP doesn't care about the server side trust. Only if you've configured the server authentication section in the server SSL profile, and told it to require a cert and how to validate that cert, does it care. In other words, if you left that section alone, it would generally ignore (not try to validate like the ignore validation switch in OpenSSL) the server certificate.
- Kevin_StewartEmployee
The server's certificate is sent as part of a larger message, so the problem could be anything before it as well, including cipher mismatch.
-
Are you using a (subordinate) CA certificate and private key as the web server's cert/key? What are the keyUsage and extendedKeyUsage values in that certificate's X509 properties? You can see this from a Windows machine by double-clicking the certificate file of from OpenSSL on the command line:
openssl x509 -in [cert] -noout -text
-
Can you also provide an SSLDUMP of that server side handshake?
ssldump -AdNn -i [server side VLAN] port 443 [and any additional filters]
-
Can you also provide an SSLDUMP of the OpenSSL command line test?
Just spitballing here, but the error message seems to indicate there's something wrong with the server's public key. Even in lieu of validation, the server's public key can be used for encryption as part of the key exchange, so it might be worth a look at the handshake itself.
-
- Kevin_StewartEmployee
If you're ever curious about what those cryptic cipher values are (pun intended), check out the official reference:
http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml
So 0x9f means TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 and that is likely a cipher that your server does not support.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com