Ich habe eine App geschrieben mit dem Spark Java-Framework, mit TLS aktiviert.Spark app nicht senden intermediate/chain certificates
See:
Service https = ignite()
.port(8443)
.secure(keystorePath, keystorePass, truststorePath, truststorePass);
Dieser Port 443 über eine iptables-Regel bedient wird, die 443 bis 8443
Das Problem, das ich eingehende umleitet habe ist, dass bei der Verwendung des ssl-Labortest Qualys (https://www.ssllabs.com/ssltest/) Der Server stellt keine Zwischenzertifikate bereit, die in meinem Truststore konfiguriert wurden.
ähnliche Ergebnisse treten auf, wenn ich openssl s_client:
Verify return code: 21 (unable to verify the first certificate)
Zusammen mit
depth=0 /OU=Domain Control Validated/OU=PositiveSSL/CN=my.app.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/OU=PositiveSSL/CN=my.app.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /OU=Domain Control Validated/OU=PositiveSSL/CN=my.app.com
verify error:num=21:unable to verify the first certificate
verify return:1
Von dem, was ich sagen kann, scheint es, dass der Server (Funken Java-Anwendung oder eingebettetes Jetty Ich nehme an) die Zwischenzertifikate für die Kettenvalidierung nicht anbietet.
Browser sehen die Website als sicher, aber ich glaube, das liegt daran, dass die Browser die erforderlichen Zwischenzertifikate selbst herunterladen.
Der Grund, dass dies ein Problem ist, ist, dass ich versuche, Stripe Zahlung Webhooks zu verwenden, und sie haben strenge Vorschriften in Bezug auf die TLS-Cert-Kette gültig sein.
Ich bin mir nicht sicher, wo ich anfangen soll herauszufinden, warum diese Zwischenberichte nicht von meiner App geliefert werden. Könnte jemand einen Rat geben?