SSL is public key authentication. Most commonly it's used to authenticate the identify of the remote server...the server presents a certificate, signed by the private key of a certificate authority, and your browser verifies it against the authorities public key.
It is also possible to use SSL to authenticate the identify of the client. In this case, you configure your browser to present a client certificate when it connects to a remote server, and the remote server will authenticate the certificate against some authority.
This is all relatively easy and well supported by most web servers. This document discusses setting things up with Apache. The SSLRequire statement does most of the heavy lifting for this sort of configuration.