J'essaie de comprendre la relation entre le client et le serveur dans le contexte d'une connexion SSL. Ai-je raison de comprendre que le fait que la même autorité de certification (moi - dans l'exemple ci-dessous) signe à la fois le certificat du serveur et celui du client fait qu'ils peuvent communiquer. Ainsi, le serveur n'accepte la communication que lorsque le client s'authentifie avec un certificat client signé par la même autorité de certification que le certificat serveur, ce qui est essentiel à l'idée d'une connexion SSL ?
(script en dessous vient directement de http://blog.nategood.com/client-side-certificate-authentication-in-ngi )
# Create the CA Key and Certificate for signing Client Certs
openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Create the Server Key, CSR, and Certificate
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
# We're self signing our own server cert here. This is a no-no in production.
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
# Create the Client Key and CSR
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr
# Sign the client certificate with our CA cert. Unlike signing our own server cert, this is what we want to do.
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
server {
listen 443;
ssl on;
server_name example.com;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_client_certificate /etc/nginx/certs/ca.crt;
ssl_verify_client on;