Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier)

andkul

Bekanntes Mitglied
Hallo Leute,

ich habe folgendes Problem:

Ich versuche per Java-Code einer bestimmten URL immer zu vertrauen, auch ohne Zertifikat. Wenn ich danach google oder hier im Forum suche, finde ich immer nur Beispiele wie man die Überprüfung von Zertifikaten generell ausschaltet. Ich will aber, dass nur das Zertifikat einer bestimmten URL nicht geprüft wird.
Aktuell bin ich soweit, dass ich ALLEN urls vertraue, jetzt würde ich das gerne noch auf eine bestimmte URL beschränken?! Kann mir da jemand einen Tipp geben

Danke

Code:
public void trustUrl(){
           final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
            @Override
           public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
            @Override
           public void checkClientTrusted(final X509Certificate[] certs, final String authType) {
               
            }
            @Override
           public void checkServerTrusted(final X509Certificate[] certs, final String authType) {
            }
        } };
       
        try {
           final SSLContext sslContent = SSLContext.getInstance("SSL");
           sslContent.init(null, trustAllCerts, new java.security.SecureRandom());
           HttpsURLConnection.setDefaultSSLSocketFactory(sslContent.getSocketFactory());

           final HostnameVerifier allHostsValid = new HostnameVerifier() {
               @Override
               public boolean verify(final String hostname, final SSLSession session) {
                   
                   return true;
               }
           };
           HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
       } catch (final KeyManagementException e) {
           LOGGER.error("SSL-Fehler", e);
       } catch (final NoSuchAlgorithmException e) {
           LOGGER.error("SSL-Fehler", e);
       }
}
 
Du musst das Zertifikat einfach zum Java Trust Store hinzufügen.
Allerdings müsstest du das dann bei jedem Rechner manuell tun.

Oder im Programm. Das ist in deinem Fall auch ziemlich einfach. Du musst lediglich den Code umschreiben:
Code:
final HostnameVerifier allHostsValid = new HostnameVerifier() {
    @Override
    public boolean verify(final String hostname, final SSLSession session) {
        if (hostname.contains("yourdomain.com")) {
            return true;
        }

        return false;
    }
};

Ob sowas gut ist, lasse ich jetzt mal im Raum stehen.
Ich habe lediglich deine Frage beantwortet.
 

Neue Themen


Zurück
Oben