2 votes

Les certificats du serveur et du client doivent-ils être signés par la même autorité de certification dans le cadre du protocole SSL ?

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;

3voto

Nikolay Dimitrov Points 881

La réponse courte est non. Il s'agit de deux aspects distincts. Ici :

ssl_certificate      /etc/nginx/certs/server.crt;
ssl_certificate_key  /etc/nginx/certs/server.key;

Vous configurez les certificats du serveur qui doivent être reconnus par le client.

Et ici :

ssl_client_certificate /etc/nginx/certs/ca.crt;

Vous configurez l'autorité de certification auprès de laquelle vérifier les certificats de vos clients.

1voto

kenchew Points 244

"Les certificats du serveur et du client doivent-ils être signés par la même autorité de certification en SSL ?

En bref, c'est possible, mais pas nécessaire.

Pour voir pourquoi, décomposons les étapes mais sans trop de technique.

De votre point de vue, lors de la mise en place du serveur nginx.

Vous voulez atteindre 2 objectifs.

  1. Prouvez l'identité de votre serveur.

    Pour cela, vous obtenez a CA pour signer votre servidor certificat et le présenter à un client qui se connecte à votre serveur.

  2. Vérifier l'identité du client qui se connecte au serveur

    Pour cela, vous devez définir le liste des CA en qui vous avez confiance et qui signe le certificat du client.

    Lorsqu'un client se connecte à votre serveur, vous vérifiez si l'option cliente présenté est signé par votre liste de CA

Ce n'est pas la fin. Regardons du côté du client.

Le client souhaite également atteindre 2 objectifs.

  1. Prouver l'identité du client lors de la connexion à votre serveur.

    Pour ce faire, le client fait appel à une autorité de certification pour signer ses données. cliente certificat et le présenter à votre serveur lors de la connexion.

    Voici le piège, l'AC qui signe le certificat du client doit être dans la liste des AC de votre serveur.

  2. Vérifiez l'identité de votre serveur

    Pour cela, le client doit faire confiance à l'autorité de certification qui signe le certificat de votre serveur.

    Comment cela se fait-il ?

    Généralement, cette liste est prédéfinie sur le système ou le navigateur, de sorte que cela se fait de manière transparente.

    Mais si vous écrivez un client, il se peut que vous deviez définir cette liste de CA de confiance ou simplement laisser le client connaître la CA qui signe votre certificat de serveur.

Il peut donc arriver que l'autorité de certification qui signe le serveur et le client soit la même, mais ce n'est pas nécessaire. Tout dépend de la liste des AC définies sur le serveur et le client.

0voto

JamesWillett Points 561

Les certs du serveur et les certs du client sont utilisés de manière complètement différente.

Les seules similitudes sont :

  • Ils contiennent tous deux le mot "certificat".
  • Ils utilisent tous deux des clés publiques et privées pour le cryptage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X