Sto cercando di capire in che modo il blocco dei certificati funziona con i certificati autofirmati. La mia idea è che un server con un certificato autofirmato accetterà le connessioni solo dai client che hanno ottenuto il certificato del server (blocco del certificato).
Ho generato la chiave privata del server & file di certificato usando il comando di sotto
Server: openssl req -x509 -days 365 -newkey -sha512 rsa:4096 -keyout keyfile.key -out certfile.cert
E poi sto cercando di accettare una connessione con questo comando
Server: openssl s_server -accept 5000 -key keyfile.key -cert certfile.cert
Client:openssl s_client -connect localhost:5000
La connessione ha esito positivo ma sembra che il server stia inviando il suo certificato durante l'handshake che non è quello che mi aspetto quindi ho provato il comando di sotto
Server: openssl s_server -accept 50020 -key keyfile.key -cert certfile.cert -Verify 0
Client: openssl s_client -connect localhost:50020
Ora il client non è in grado di connettersi e il server sta dando questo errore:
140736924775432:error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate:s3_srvr.c:3269:
Non sono sicuro di come specificare il file del certificato del server dal lato client. Ho copiato il certificato del server (certfile.cert) sul client e ho provato con il comando seguente, ma questo richiede anche una chiave privata.
Client: openssl s_client -connect localhost:50020 -cert certfile.cert
Mi sto confondendo con Server & Certificati client e c'è un modo per il client di specificare il certificato del server?