Hey ho,
so wie ich dich verstehe möchtest du das Zertifikat von Server B herunterladen und dann im CertStore / Truststore ablegen, oder?
Ist das Zertifikat von einer CA unterschrieben? Dann könntest du auch der CA vertrauen und dem Zertifikat würde vertraut werden. Entweder lädst du es per Browser runter und wirfst es mit scp oder einem Editor deiner Wahl hoch (ist ja nur Text). Oder eleganter mittels openssl wie du es bereits probiert hast, pack aber noch eine Umleitung von stdErr nach dev/null dazu, dann verschwinden die Zusatzinfos:
openssl s_client -CApath /etc/ssl/certs -connection host:443 < /dev/null 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > hostname.crt
Ich würde schauen, dass ich die CA Zertifikate in den Truststore werfe, allerdings kommt es darauf an welche Distribution und welche SSL Lib du verwendest. Wenn du einen JavaClient nutzt, musst du diesen vermutlich bei Java hinterlegen, ich erinnere mich dass Java seine Zertifikat selbst verwaltet und nicht von Openssl verwendet.
Eventuell kannst du aber auch bei deinem Javaclient den CApfad angeben, entweder im Framework oder bei der Java Ausführung.
Welches Java, Framework nutzt du denn? Dann kann man ggf. mal nachlesen.
Aber kurz zur Erklärung, der Openssl connect Befehl funktioniert, liefert dir auch das Zertifikat aus und der CA Chain ist trusty? Bei Lets Encrypt zum Beispiel würde es so aussehen:
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = xyz.tld
verify return:1
DONE