SSL-Standardeinstellungen in Liberty

Gibt das SSL-Standardzertifikat, den SSL-Keystore und die SSL-Konfiguration in Liberty an.

Standardzertifikat und Keystore

Damit Entwickler ohne großen Aufwand mit der Entwicklung beginnen können, können sie den Parameter createSSLCertificate im Befehl securityUtility angeben, um ein selbst signiertes Zertifikat zu erstellen. Sie können das Tool entweder direkt über die Befehlszeile aufrufen oder über einen Serveraufruf, um das Standardzertifikat und den Keystore beim Serverstart zu erstellen.

Der Server erstellt den Standardkeystore und das Zertifikat, wenn ein Benutzer in der Datei server.xml ein Keystore-Element mit dem Namen defaultKeyStore verwendet hat. Beispiel:
<keyStore id="defaultKeyStore" password="yourPassword" />

Wenn es für das Element defaultKeyStore eine Keystore-Konfiguration gibt und der Keystore beim Serverstart nicht vorhanden ist, ruft der Server den Parameter createSSLCertificate auf. Dieser Parameter erstellt den Keystore mit einem Kennwort, das in der Konfiguration angegeben ist.

Details zum Standardkeystore:
  • Position: Die Keystore-Datei heißt key.jks und befindet sich im Server- bzw. Clientverzeichnis resources/security.
  • Keystore-Typ: Der Keystore-Typ ist JKS.
  • Kennwort: Das in der Konfiguration enthaltene Kennwort.
Standardzertifikat, das mit Liberty-Details erstellt wird:
  • Typ: Das Zertifikat ist ein selbst signiertes Zertifikat.
  • Größe: Die Standardzertifikatgröße ist 2048.
  • Signaturalgorithmus: Der Signaturalgorithmus für das Zertifikat ist SHA256WITHRSA.
  • Gültigkeit: Das Zertifikat ist 365 Tage gültig.
  • Registrierter Name des Zertifikatsinhabers: Das Zertifikat wird wie folgt erstellt: CN=<Hostname>,OU=<Client- oder Servername>,O=ibm,C=US als registrierter Name des Zertifikatsinhabers.

Der Parameter createSSLCertificate kann in der Befehlszeile aufgerufen werden, wenn Benutzer das Zertifikat anpassen möchten.

Anmerkung: Wenn die Verwendung eines Verbundcontrollers nicht sinnvoll erscheint, weil es beispielsweise nur einen oder zwei Liberty-Server gibt, kann ein selbst signiertes Zertifikat verwendet werden, um die Anzahl von Clients zu beschränken, die eine Verbindung zum Liberty-Member-Server herstellen können. Es wird empfohlen, einen IHS-Server zu verwenden, der dem Liberty vorgeschaltet wird und für den ein entsprechendes unterzeichnetes Zertifikat einer Zertifizierungsstelle, zusammen mit CN-Whitelisting verwendet werden kann, um zu steuern, welche Clients eine Verbindung zu IHS herstellen können. Sie können einen vertrauenswürdigen Kanal zwischen IHS und dem Liberty-Member-Server verwalten, indem Sie das selbst signierte Zertifikat verwenden.

SSL-Standardkonfiguration

Die für SSL erforderliche Minimalkonfiguration ist ein einzelnes Keystore-Element mit dem Namen defaultKeyStore. Wenn das Element defaultKeyStore in der Konfiguration vorhanden ist, erstellt die Laufzeit hierfür eine SSL-Konfiguration mit dem Namen defaultSSLConfig.

Details zu defaultSSLConfig:

  • Protokoll: Wenn die IBM® JRE verwendet wird, ist das Protokoll standardmäßig auf SSL_TLSv2 gesetzt. Wenn die Oracle JRE verwendet wird, ist das Protokoll auf SSL gesetzt.
  • Chiffrierwerte: Die Liste mit den Chiffrierwerten wird durch Abrufen einer Liste der unterstützten Chiffrierwerte aus der zugrunde liegenden JRE erstellt. Standardmäßig beschränkt sich die Liste auf alle Chiffrierwerte mit 128 Bit und höher und 3DES. RC4 wurde entfernt, da eine Aktivierung als nicht sicher angesehen wird. ECDHE-Chiffrierwerte wurden entfernt, weil sie Fehler verursachen können, wenn Sie einen Server aufrufen, der sie nicht unterstützt. Sie können die Liste mit den Chiffrierwerten anpassen, um sie einzuschließen.
  • Clientauthentifizierung: Standardmäßig sind clientAuthentication und clientAuthenticationSupported inaktiviert.
  • Keystore: In der Standardkonfiguration wird defaultKeyStore als Schlüssel und als Truststore verwendet.

Sie können der Datei server.xml ein Element defaultSSLConfig hinzufügen, um die SSL-Konfigurationseigenschaften anzupassen. Ein angepasstes ssl-Element mit dem Namen defaultSSLConfig wird wie die SSL-Standardkonfiguration behandelt, solange keine andere SSL-Konfiguration als Standardkonfiguration identifiziert wurde. Weitere Informationen finden Sie unter SSL-Konfigurationsattribute.

Wenn Sie eine anderes ssl-Element in der Konfiguration für die SSL-Standardkonfiguration angeben möchten, kann dies von den Benutzern über das sslDefault-Element ermittelt werden.
<sslDefault sslRef="customSSLConfiguration" />

[17.0.0.1 und höher]Das Verhalten der Features (transportSecurity-1.0) und (ssl-1.0) entspricht der Sicherheitsverarbeitung. Das Verhalten des Features transportSecurity-1.0 setzt das Verhalten des Features ssl-1.0 ab Fixpack 17.0.0.1 außer Kraft. Verwenden Sie das Verhalten des Features transportSecurity-1.0, um SSL-Optionen für abgehende Verbindungen anzuwenden. Wenn Ihre Sicherheitskonfiguration keine Optionen für abgehende Verbindungen enthält, können Sie weiterhin das Verhalten des Features ssl-1.0 verwenden.

Verhalten von (transportSecurity-1.0)

Wenn Sie das Feature transportSecurity-1.0 aktivieren, werden SSL-Option für abgehende Verbindungen verfügbar. Sie können entweder einen Standardwert für abgehende Verbindungen über das Attribut outboundSSLRef im Element sslDefault festlegen oder Sie legen den SSL-Filter in der SSL-Konfiguration fest, um dynamische abgehende Verbindungen zu ermöglichen. Der Filter gibt entweder den Host oder eine Kombination aus Host und Port an. Basierend auf dem Host und Port der abgehenden Verbindung kann die abgehende Verbindung mit der SSL-Konfiguration übereinstimmen.

Der SSL-Laufzeitcode legt nicht den SSLContext-Verarbeitungsstandard fest, wenn Sie das Feature transportSecurity-1.0 aktivieren. Der SSL-Laufzeitcode legt eine angepasste SSLSocketFactory-Klasse über die Java™-Sicherheitseigenschaft ssl.SocketFactory.provider fest. Der SSLContext-Verarbeitungsstandard ist der SSLContext-JSSE-Standard (Java Secure Socket Extension), der die cacerts-Datei für den Keystore und den Truststore verwendet.

Das Programm gibt die angepasste Liberty-SSL-Socket-Factory für jeden Code zurück, der versucht, die SSLSocketFactory-Standardklasse über die javax.net.ssl.SSLSocketFactory.getDefault()-Eigenschaft abzurufen. Die angepasste SSLSocketFactory-Klasse kann die richtige SSL-Konfiguration für die abgehende Verbindung auflösen.

Die von Liberty bereitgestellte Features verwenden Liberty-SSL-Konfigurationen. APIs anderer Anbieter für SSL-Aufrufe für abgehende Verbindungen müssen möglicherweise für die Verwendung der Liberty-Funktionalität konfiguriert werden. Der Liberty-SSL-Laufzeitcode legt nicht den SSLContext-Verarbeitungsstandard fest, wenn die Features transportSecurity-1.0 und ssl-1.0 aktiviert werden. APIs anderer Anbieter, die vom SSL-Standardkontext abhängig sind, profitieren nicht von der Liberty-SSL-Konfiguration. Wenn das Feature transportSecurity-1.0 aktiviert ist, legt der Liberty-SSL-Laufzeitcode eine angepasste SSLSocketFactory-Klasse über die ssl.SocketFactory.provider-Java-Sicherheitseigenschaft fest. APIs anderer Anbieter können von der Liberty-SSL-Konfiguration mit dem SocketFactory-Standard profitieren, indem Sie die Eigenschaft javax.net.ssl.SSLSocketFactory.getDefault() aufrufen.
Anmerkung: Die angepasste SSLSocketFactory-Klasse von Liberty erkennt nicht die Java-Systemeigenschaften, wie z. B. javax.net.ssl.keystore, an.
Verhalten von (ssl-1.0)

Die Attribute aus der Liberty-SSL-Standardkonfiguration werden verwendet, um einen SSL-Kontext (SSLContext) zu erstellen. Dieses SSLContext-Element wird für den Prozess über die Java-API SSLContext.setDefault() als SSLContext-Standardelement gesetzt. Wenn eine Anwendung einen API-Aufruf, wie beispielsweise httpURLConnection(), mit einer HTTPS-URL absetzt und keine SSL-Informationen bereitstellt, berücksichtigt die Anwendung das SSLContext-Standardelement des Prozesses. In diesem Fall ist das SSLContext-Element das Element, das mit der Liberty-SSL-Standardkonfiguration erstellt wurde.

Liberty verwendet das SSLContext-JSSE-Standardelement, wenn in Liberty keine SSL-Standardkonfiguration definiert wurde. Das SSLContext-JSSE-Standardelement verwendet die Datei cacerts als Keystore und Truststore. Liberty hat keine SSL-Standardkonfiguration, wenn das SSL-Feature nicht definiert ist, oder wenn die vorhandene SSL-Konfiguration nicht als Standardkonfiguration angegeben wurde. Die Standardkonfiguration ist dann entweder das genannte defaultSSLConfig-Element, das bei Definition eines defaultKeyStore-Elements implizit sein kann, oder eine alternative SSL-Konfiguration wird über das sslDefault-Element bezeichnet.

Die javax-Systemeigenschaften (javax.net.ssl.keystore) werden verwendet, um die Keystore- und Truststore-Informationen für den SSL-Standardkontext zu konfigurieren, und dürfen nicht verwendet werden. Wenn die Eigenschaften für den Prozess definiert werden, werden sie gelöscht, wenn die Methode SSLContext.setDefault() aufgerufen wird.

[17.0.0.1 und höher]Wenn ein SSL-Element standardmäßig für abgehende SSL-Verbindungen verwenden werden soll, können Sie das Attribut outboundSSLRef im Element sslDefault verwenden.
<feature>transportSecurity-1.0</feature>
<sslDefault sslRef="mySSLConfig" outboundSSLRef="customSSLConfiguration" />
Wenn Sie ein abgehendes SSL-Standardelement angeben möchten, muss das Feature transportSecurity-1.0 aktiviert sein. Wenn outboundSSLRef angegeben ist, verwenden abgehende SSL-Konfigurationen standardmäßig eine SSL-Konfiguration, die über dieses Attribut angegeben ist. Wenn das Feature transportSecurity-1.0 fehlt, wird outboundSSLRef ignoriert. Wenn kein outboundSSLRef-Attribut angegeben wird, verwendet der abgehende Aufruf den Wert, der über das Attribut sslRef oder defaultSSLConfig angegebene wurde, wenn sslRef keine SSL-Konfiguration referenziert.

Symbol das den Typ des Artikels anzeigt. Referenzartikel

Dateiname: rwlp_liberty_ssl_defaults.html