Experts, The last message sent from a client in an SSL handshake with client certificate authentication is the Certificate Verify message. Here are my questions. How is the Certificate Verify message constructed in an SSL Handshake? How does a server validate the Certificate Verify message? The information I have found is from the SSL 3.0 RFC. https://tools.ietf.org/html/rfc6101#section-5.6.8 From my understanding, this is how the Certificate Verify is constructed and validated.
If an SSL proxy exists between the client and the server, then this could break client certificate authentication. This is because the hashed data that is generated from the Client Hello and Server Hello would be different. Any corrections on my understanding and guidance on client certificate authentication is appreciated. Thanks for the help in advance. Brooks asked 29 Jun '15, 09:30 Brooks |
One Answer:
SSL 3.0 must not be used, refer to RFC 5246 (TLS 1.2) - 7.4.8. Certificate Verify for a more up-to-date specification. How is the Certificate Verify message constructed in an SSL Handshake?The Certificate Verify message is constructed by the client. It contains the signed hash of the handshake messages. RFC 5246, section 7.4.8 about the handshake messages:
RFC 5246, section 4.7 describes the digitally-signed attribute, section 7.4.1.4.1 describes the available signature types. Basically you will have this form:
How does a server validate the Certificate Verify message?The server will buffer the handshake messages and should then obtain the same hash as the one supplied by the client. In order to authenticate the hash, the server must validate the signature. This can be done by using the public key from the certificate that was provided by the client in the Client Certificate handshake message. A MitM SSL proxy can indeed not authenticate itself against the server since it does not posess the client key and therefore cannot sign the parameters exchanged in the handshake. answered 29 Jun '15, 09:58 Lekensteyn RFC 7568 deprecates SSL 3.0 and requires it to not be used. (29 Jun '15, 10:20) grahamb ♦ @grahamb Right, SSL 3.0 is deprecated and RFC 7568 ("ssl3.0 die die die") forbids its use (the first sentence of this answer links to that). (29 Jun '15, 10:23) Lekensteyn Ah, I missed that it was a link, hence my post. (29 Jun '15, 13:14) grahamb ♦ Thanks for the explanation! (01 Jul '15, 19:28) Brooks |
Not really a Wireshark question, more a TLS\SSL one. You should ask your question in a more suitable forum.