Beispiel: Eigenen Trust Manager für angepasste SSL-Vertrauensentscheidungen entwickeln

Das folgende Beispiel stammt von einem angepassten Trust Manager. Dieser Trust Manager trifft keine Vertrauensentscheidungen, sondern referenziert die Informationen im X.509-Zertifikat, um seine Entscheidungen treffen zu können.

Nachdem Sie einen eigenen Trust Manager erstellt und gepackt haben, können Sie ihn für einen reinen Client mit der Datei ssl.client.props konfigurieren oder über den Link SSLConfiguration TrustManager in der Administrationskonsole. Nähere Informationen zu Trust-Managern finden Sie im Artikel Entscheidungen über die Vertrauenswürdigkeit von X.509-Zertifikaten mit dem Trust-Manager treffen.
Anmerkung: Dieses Beispiel dient nur zur Information und wird nicht unterstützt.
import java.security.cert.X509Certificate;
import javax.net.ssl.*;
import com.ibm.wsspi.ssl.TrustManagerExtendedInfo;

public final class CustomTrustManager implements X509TrustManager,
TrustManagerExtendedInfo
{
    private static ThreadLocal threadLocStorage = new ThreadLocal();
    private java.util.Properties sslConfig = null;
    private java.util.Properties props = null;

    public CustomTrustManager()
    {
    }

    /**
     * Von der WebSphere Application Server-Laufzeit aufgerufene Methode zum Festlegen der
     * Zielhostinformationen und potenziell weiterer künftiger Verbindungsinformationen.
     * Diese Informationen müssen in ThreadLocal gesetzt werden, weil ein
     * Trust Manager von mehreren Verbindungen verwendet werden kann.
     * 
     * @param java.util.Map - enthält Informationen zur Verbindung
     */
    public void setExtendedInfo(java.util.Map info)
    {
        threadLocStorage.set(info);
    }

    /**
     * Intern aufgerufene Methode zum Abrufen von Informationen zur Verbindung 
     * 
     * @return java.util.Map - enthält Informationen zur Verbindung
     */
    private java.util.Map getExtendedInfo()
    {
        return (java.util.Map) threadLocStorage.get();
    }

    /**
     * Von der WebSphere Application Server-Laufzeit aufgerufene Methode zum Festlegen der angepassten
     * Eigenschaften.
     * 
     * @param java.util.Properties - angepasste Eigenschaften
     */
    public void setCustomProperties(java.util.Properties customProps)
    {
        props = customProps;
    }

    /**
     * Intern aufgerufene Methode für die in der Trust-Manager-Konfiguration
     * gesetzten angepassten Eigenschaften
     * 
     * @return java.util.Properties - in der Konfiguration festgelegte Informationen
     */
    private java.util.Properties getCustomProperties()
    {
        return props;
    }

    /**
     * Von der WebSphere Application Server-Laufzeit aufgerufene Methode zum Festlegen der SSL-
     * Konfigurationseigenschaften für diese Verbindung
     * 
     * @param java.util.Properties - Enthält eine Eigenschaft für die SSL-Konfiguration.
     */
    public void setSSLConfig(java.util.Properties config)
    {
        sslConfig = config;    
    }

    /**
     * Von TrustManager aufgerufene Methode, um Zugriff auf die SSL-Konfiguration für
     * diese Verbindung zu erhalten
     * 
     * @return java.util.Properties
     */
    public java.util.Properties getSSLConfig ()
    {
        return sslConfig;
    }

    /**
     * Serverseitig aufgerufene Methode, um Vertrauen zu einem Client aufzubauen.
     * Infos zu javax.net.ssl.X509TrustManager enthält die API-Dokumentation.
     */
    public void checkClientTrusted(X509Certificate[] chain, String authType) 
        throws java.security.cert.CertificateException
    {
        for (int j=0; j<chain.length; j++)
        {
            System.out.println("Client certificate information:");
            System.out.println("  Subject DN: " + chain[j].getSubjectDN());
            System.out.println("  Issuer DN: " + chain[j].getIssuerDN());
            System.out.println("  Serial number: " + chain[j].getSerialNumber());
            System.out.println("");
        }
    }


    /**
     * Clientseitig aufgerufene Methode, um Vertrauen zu einem Server aufzubauen.
     * Infos zu javax.net.ssl.X509TrustManager enthält die API-Dokumentation.
     */
    public void checkServerTrusted(X509Certificate[] chain, String authType) 
        throws java.security.cert.CertificateException
    {
        for (int j=0; j<chain.length; j++)
        {
            System.out.println("Server certificate information:");
            System.out.println("  Subject DN: " + chain[j].getSubjectDN());
            System.out.println("  Issuer DN: " + chain[j].getIssuerDN());
            System.out.println("  Serial number: " + chain[j].getSerialNumber());
            System.out.println("");
        }
    }

    /**
     * Array mit CA-Zertifikaten zurückgeben, die für die Authentifizierung von
     * Peers anerkannt sind. Hier kann null zurückgegeben werden, weil IbmX509
     * oder IbmPKIX eine Standardgruppe von Ausstellern bereitstellt.
     *
     * Infos zu javax.net.ssl.X509TrustManager enthält die API-Dokumentation.
     */
    public X509Certificate[] getAcceptedIssuers()
    {
        return null;
    }
}

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_ssldevcustomtrustmgr
Dateiname:rsec_ssldevcustomtrustmgr.html