Es gibt einen Webservice, der durch ein Zertifikat geschützt ist. In dem Client-Code, der sie aufruft, muss die Zertifizierungsstelle des Zertifikats im Truststore (JRE_Pfad \ lib \ security \ cacerts) angezeigt werden - andernfalls erhalten Sie die PKIX-Ausnahme auf der Clientseite.Einem abgelaufenen selbstsignierten Zertifikat beim Aufruf eines Webservice vertrauen
Was passiert, wenn das Zertifikat abgelaufen ist - der Client-Code schlägt fehl.
Dies kann jedoch in die Trusts direkt durch Zugabe des Zertifikats umgangen werden - Trusting an expired certificate
das heißt, wenn das Zertifikat selbst und nicht die CA in dem Trusts ist, dann ist alles funktioniert auch, wenn das Zertifikat abgelaufen ist.
In meinem Szenario ist das Webservice-Zertifikat ein selbstsigniertes, also musste ich es trotzdem zum Truststore hinzufügen, und der Client funktioniert auch dann gut, wenn das Zertifikat abgelaufen ist.
Jetzt ist meine Frage, wird dies in allen Szenarien funktionieren - mein Programm ist nur ein Befehlszeilenprogramm von einer lokalen JRE ausgeführt.
Wenn eine Anwendung den Webservice aufruft und die Anwendung auf Websphere, JBoss, WebLogic, Tomcat, Glassfish usw. läuft und das selbstsignierte Zertifikat dem Truststore dieser Umgebung hinzugefügt wird, kann ich weiterhin davon ausgehen, dass es fortgesetzt wird arbeiten (keine abgelaufenen Fehler geben)?
Ich nehme an, es würde funktionieren - weil diese Anwendungsserver auch eine JRE wie jedes Programm verwenden würden - oder fehlt mir etwas?
Wenn Sie es sicher nicht wollen, nicht HTTPS verwenden. Wenn Sie es sicher möchten, versuchen Sie nicht, Ihre eigenen Sicherheitsfunktionen auszuwählen. – EJP
wie @EJP sagte: Es ist normalerweise keine gute Idee, die Sicherheit zu schwächen. Aber oft müssen wir als Programmierer auch verhindern, dass Anwendungen stillschweigend ausfallen. Sie sollten also entweder sicherstellen, dass bei einem Fehler des Programms der Grund für jeden Administrator klar wird, der sich mit diesem Problem befasst, oder Sie könnten Ausnahmen von abgelaufenen Zertifikaten abfangen oder in Ihrem Code erzwingen, welche Zertifikate akzeptiert werden: http: // stackoverflow.com/questions/6659360/how-to-solve-javax-net-ssl-sslhandshakeexception-error – Marged
Wenn Sie OpenSSL-Befehl für Ihre Umgebung haben (installieren Sie es). Sie können es als Hintergrund cmd Hintergrund-Anwendung mit [Datum prüfen] (http://stackoverflow.com/questions/21297853/how-to-determine-ssl-cert-expiration-date-from-a-pem-encoded-certificate # answer-21297927) und das Ergebnis lesen –