I'm using Apache 2.4, with two certificates, one RSA signed by CACert, and one ECC self-signed. Neither of these certificates provide a path to a broswer-trusted root certificate. My question is this: When presented with two different certificates for a website, how does the browser decide which one to use?
-
5It's only presented with one. Depending on the cipher suite that your server chooses from the client's list. The server will present one of them to the browser. If RSA is the designated asymmetric algorithm then the RSA one is presented. If an elliptic curve algorithm is chosen then ECC one is presented. If the browser doesn't trust it the user is prompted, and asked to confirm that they want to trust the certificate.– RoraΖNov 18, 2014 at 14:42
1 Answer
Guess
My educated guess from reading the spec: The browser will never see more than one server-certificate. Rather the cipher spec is negotiated in advance. And ONLY THEN does the server send the certificates.
So if negotiation winds up with an an RSA-cert authenticated cipher suite, then the RSA cert chain will be sent. And if the negotiation winds up with an ECDSA-cert authenticated cipher suite, then the ECDSA cert chain will be sent.
Standards document: https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2
7.4.2. Server Certificate [...] The certificate MUST be appropriate for the negotiated cipher suite's key exchange algorithm and any negotiated extensions.
Testing
I can't test for this right now.
And: last I heard (2013) SSL-Labs couldn't either: Qualys Forums: Dual certificates and key exchange scores