Sto cercando dei chiarimenti sui requisiti di affidabilità (se ce ne sono) dei certificati client.
Sto lavorando con una terza parte per accedere ai loro servizi tramite Mutual TLS.
Genero una CSR, la invio alla terza parte, mi inviano un certificato (che hanno generato utilizzando la propria CA). È un singolo certificato. Non ho ricevuto alcun certificato intermedio, poiché presumo che non ti serva per inviare richieste autenticate dal certificato del client .
Quando tento di connettermi con questo certificato, ottengo un errore di handshake:
openssl s_client -connect the-server.com:443 -cert the-cert.pem -key the-key.pem -state
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=2 /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
verify error:num=20:unable to get local issuer certificate
verify return:0
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write certificate verify A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL3 alert read:fatal:handshake failure
SSL_connect:failed in SSLv3 read finished A
78460:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/ssl/s3_pkt.c:1145:SSL alert number 40
78460:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/ssl/s23_lib.c:185:
Mi viene detto che non funziona come: 'i file pem non contengono i certificati CA pubblici che hanno firmato il certificato client' tuttavia, se questo fosse il caso, il client potrebbe inviare anche il certificato (come sembra farlo nei passaggi di negoziazione TLS sopra) se fosse il caso che ci si doveva fidare di esso?