2013-05-20 6 views
9

Vogliamo utilizzare l'autenticazione del certificato bidirezionale con ssl aperto.Verifica SSL in entrata tramite OpenSSL S_Server

Quando apriamo s_server come segue, il cliente è in grado di connettersi al mio server:

openssl s_server -accept 12345 -cert our-cert.pem 

(il nostro-cert.pem è il nostro certificato.)

Questo funziona bene. Tuttavia, i miei requisiti sono:

  1. verificare che il certificato in entrata è valida con una CA di fiducia, e
  2. Verificare il nome comune è quello che ci aspettiamo che sia.

Ho provato questo:

openssl s_server -accept 12345 -cert our-cert.pem -CApath /etc/ssl/certs/ 

Questo consente al client di connettersi. Ma le mie domande sono:

  1. Come posso essere sicuro che sta convalidando l'incomming SSL è valido ed emesso da una CA?
  2. Come posso convalidare il nome comune è quello che mi aspetto?

risposta

6

Per il server, è necessario aggiungere l'opzione "-Verificare" per forzare il client a fornire un certificato. La profondità è la lunghezza massima della catena di certificati del cliente.

Che dovrebbe occuparsi della domanda n.

Per # 2, non sono sicuro che ci sia un modo per limitare con Nome comune utilizzando questi comandi OpenSSL.

È possibile consultare la documentazione OpenSSL per il server/comandi client qui:

s_server

s_client

4

Per verificare il CA utilizzare questo:

/usr/local/ssl/bin/openssl s_server -accept 7569 -cert /opt/GCTI/cert/host1_cert.pem -CAfile /opt/GCTI/cert/ca_cert.pem -key /opt/GCTI/cert/host1_priv_key.pem    

-cert is the public key file for this host 
-key is the private key file for this host 
-CAfile is the CA file, needed for self signed certificate 
-port is the port number to open up 

Questo aprirà una porta di ascolto 7569 che accetterà le connessioni TLS con il certificato specificato.

se la CA non è valido, allora l'ultima riga sarà simile a questa

Verify return code: 21 (unable to verify the first certificate) 

Per connettersi a questo server, end completa per terminare di prova (non proprio la domanda posta)

openssl s_client -showcerts -connect host1:7569 -CAfile /opt/GCTI/cert/ca_cert.pem 

sostituisci host1 con il tuo host attuale. Ciò verificherà che il servizio TLS sia valido e che esegua un certificato firmato dalla stessa CA.