Kontekst pytania: Chcę przetestować uzgadnianie TLS i zobaczyć wszystkie dane wyjściowe (do celów związanych z uczeniem się / pracą) między moim komputerem lokalnym (z systemem OSX Yosemite) a zdalnym serwerem roboczym (z uruchomioną instancją amazonu ec2 linux)
`openssl s_server -cert /etc/ssl/certs/test.pem -msg`
na serwerze roboczym. Zgodnie z dokumentacją openssl na serwerze s_server uruchamia on serwer ssl / tls na porcie 4433. Mogę to potwierdzić, uruchamiając:
sudo netstat -tulpn
Otrzymuję następujący wiersz, który potwierdza, że port jest otwarty:
tcp 0 0 0.0.0.0:4433 0.0.0.0:* LISTEN 9215/openssl
Teraz z mojego komputera lokalnego uruchamiam:
openssl s_client -tls1 -cert <client_cert> -msg -connect <serverHost>:4433 -state -debug
i nie łączy się z usługą openssl działającą na porcie 4433 (tzn. nie uruchamiają uzgadniania z wiadomościami hello). Przekroczono limit czasu połączenia z:
connect: Operation timed out
connect:errno=60
To jest dość mylące. Dlaczego nie łączy się z portem 4433 na serwerze roboczym?
s_client
wyśle i użyje certyfikatu i klucza klienta s_server
tylko, jeśli serwer zażąda uwierzytelnienia klienta, i zrobi to tylko, jeśli podasz -verify n
lub -Verify n
. Oba będą wyświetlać i wyświetlać błędy weryfikacji, chyba że określisz -CAfile
i / lub -CApath
skonfigurujesz odpowiednie dane, ale jeśli chcesz tylko debugować wyjście, błędy weryfikacji nie mają znaczenia.
serverHost
to, że blokujesz port 4433. Spróbujtimeout 1 bash -c 'cat < /dev/null > /dev/tcp/serverHost/4433' && echo "port is blocked" || echo "port is blocked"