Both certificates must exist before connecting. They are usually created by certification authorities (not necessarily the same). (There are alternative cases where verification can be performed in different ways, but some verification is necessary.)
The server certificate must be created by a CA that the client trusts (and following the naming conventions specified in RFC 6125 ).
The client certificate must be created by a CA that the server trusts.
It depends on each side to choose what it hopes for.
There are online CA tools that will allow you to apply for a certificate in your browser and install it there as soon as the CA releases it. They do not have to be on a server that requests authentication of a client certificate.
Certificate distribution and trust management is the role of a public key infrastructure (PKI) implemented through a CA. The client and SSL / TLS servers, and then just the users of this PKI.
When a client connects to a server that requests authentication of a client certificate, the server sends a list of CAs that it agrees to accept as part of the client certificate request. Then the client can send his client certificate, if he wishes, and suitable.
The main benefits of client certificate authentication are:
- Private information (private key) is never sent to the server. The client does not allow to completely hide it during authentication.
- A server that does not know a user with this certificate can still authenticate this user if he trusts the CA that issued the certificate (and that the certificate is valid). This is very similar to how passports are used: you may have never met a person showing you a passport, but since you trust the authority to issue it, you can connect the person with the person.
You may be interested in Benefits of client certificates for client authentication? (in the Security.SE section) .
Bruno May 23 '12 at 18:42 2012-05-23 18:42
source share