SSL-Konfigurationsattribute
SSL-Konfigurationen enthalten Attribute, mit denen Sie das Verhalten der SSL-Transportebene in Liberty steuern können. In diesem Abschnitt werden alle für eine SSL-Konfiguration verfügbaren Einstellungen iteriert.
SSL-Feature
Damit SSL in einem Server aktiviert wird, muss das SSL-Feature in der Datei server.xml enthalten sein:
<featureManager> <feature>ssl-1.0</feature>
</featureManager>
SSL-Standard
Sie können mehrere SSL-Konfigurationen konfigurieren. Wenn mehrere SSL-Konfigurationen konfiguriert sind, muss die SSL-Standardkonfiguration in der server.xml-Datei angegeben werden, die die Servicekonfiguration sslDefault verwendet.
Attribut | Beschreibung | Standardwert |
---|---|---|
sslRef | Das Attribut sslRef gibt den Namen der SSL-Konfiguration an, die als Standard verwendet werden soll. | Der SSL-Standardkonfigurationsname ist defaultSSLConfig. |
<sslDefault sslRef="mySSLSettings" />
SSL-Konfiguration
Die SSL-Konfigurationsattribute werden verwendet, um die SSL-Umgebung an Ihre Anforderungen anzupassen. Diese Attribute können im Servicekonfigurationselement ssl in der Datei server.xml festgelegt werden.
Attribut | Beschreibung | Standardwert |
---|---|---|
id | Das Attribut id ordnet dem SSL-Konfigurationsobjekt einen eindeutigen Namen zu. | Es gibt keinen Standardwert. Ein eindeutiger Name muss angegeben werden. |
keyStoreRef | Das Attribut keyStoreRef legt den Namen des Keystore-Serviceobjekts fest, das den Keystore der SSL-Konfiguration definiert. Der Keystore enthält den Schlüssel, der benötigt wird, um eine SSL-Verbindung herzustellen. | Es gibt keinen Standardwert. Eine Keystore-Referenz muss angegeben werden. |
trustStoreRef | Das Attribut trustStoreRef legt den Namen des Keystore-Serviceobjekts fest, das den Truststore für SSL-Konfigurationen definiert. Der Truststore enthält die Zertifikate, die zum Signieren der Verifizierung erforderlich sind. | trustStoreRef ist ein optionales Attribut. Wenn die Referenz fehlt, wird der mit keyStoreRef angegebene Keystore verwendet. |
clientAuthentication | Das Attribut clientAuthentication legt fest, ob die SSL-Clientauthentifizierung erforderlich ist. | Der Standardwert ist false. |
clientAuthenticationSupported | Das Attribut clientAuthenticationSupported legt fest, ob die SSL-Clientauthentifizierung unterstützt wird. Der Client muss kein Clientzertifikat bereitstellen. Wird das Attribut clientAuthentication auf "true" gesetzt, wird der Wert des Attributs clientAuthenticationSupported überschrieben. | Der Standardwert ist false. |
sslProtocol | Das Attribut sslProtocol definiert das SSL-Handshakeprotokoll. Das Protokoll kann SDK-abhängig sein. Wenn Sie das Protokoll ändern, müssen Sie deshalb sicherstellen, dass der Wert von dem SDK unterstützt wird, mit dem Sie arbeiten. | Der Standardwert ist SSL_TLSv2 für die IBM® JRE und SSL für die Oracle JRE. |
securityLevel | Das Attribut securityLevel bestimmt die vom SSL-Handshake verwendete
Cipher-Suite-Gruppe.
Das Attribut hat einen der folgenden Werte:
|
Der Standardwert ist HIGH. |
enabledCiphers | Mit dem Attribut enabledCiphers wird eine eindeutige Liste von Cipher-Suites angegeben. Die einzelnen Cipher Suites in der Liste müssen durch ein Leerzeichen voneinander getrennt sein. Wenn das Attribut enabledCiphers gesetzt ist, wird das Attribut securityLevel ignoriert. | Kein Standardwert vorhanden. |
serverKeyAlias | Das Attribut serverKeyAlias gibt den Schlüssel im Keystore an, der als Schlüssel für SSL-Konfigurationen verwendet werden soll. Dieses Attribut ist nur erforderlich, wenn der Keystore mehrere Schlüsseleinträge enthält. Wenn der Keystore mehrere Schlüsseleinträge enthält und mit diesem Attribut kein Schlüssel angegeben wird, wählt JSSE einen Schlüssel aus. | Kein Standardwert vorhanden. |
clientKeyAlias | Das Attribut clientKeyAlias gibt den Schlüssel im Keystore an, der als Schlüssel für die SSL-Konfiguration verwendet wird, wenn clientAuthentication aktiviert ist. Das Attribut ist nur erforderlich, wenn der Keystore mehrere Schlüsseleinträge enthält. | Kein Standardwert vorhanden. |
- Der Schlüsselmanager wird vom SSL-Handshake verwendet, um zu ermitteln, welcher Zertifikatsaliasname verwendet werden soll. Der Schlüsselmanager wird nicht in der Datei server.xml konfiguriert. Er wird aus der Sicherheitseigenschaft ssl.KeyManagerFactory.algorithm des SDK abgerufen.
- Der Trust-Manager wird vom SSL-Handshake verwendet, um Entscheidungen bezüglich der Anerkennung (Trust) zu treffen. Der Trust-Manager wird nicht in der Datei server.xml konfiguriert. Er wird aus der Sicherheitseigenschaft ssl.TrustManagerFactory.algorithm des SDK abgerufen.
<!-- Einfaches Serviceobjekt der SSL-Konfiguration. Es wird vorausgesetzt, dass ein Keystoreobjekt mit dem Namen -->
<!-- defaultKeyStore und ein Truststoreobjekt mit dem Namen defaultTrustStore in der Datei server.xml existieren. -->
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore" />
<!-- SSL-Konfigurationsserviceobjekt, das clientAuthentication aktiviert -->
<!-- und das zu verwendende TLS-Protokoll angibt. -->
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore"
clientAuthentication="true"
sslProtocol="TLS" />
<!-- SSL-Konfigurationsserviceobjekt, das den vom Handshake zu verwendenden -->
<!-- serverKeyAlias angibt. Dies setzt voraus, dass ein Zertifikat mit dem Namen -->
<!-- "default" in dem durch keyStoreRef definierten Keystore existiert.-->
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
serverKeyAlias="default" />
Keystore-Konfiguration
Die keystore-Konfiguration besteht aus den Attributen, die zum Laden eines Keystore erforderlich sind. Diese Attribute können in der Keystore-Servicekonfiguration in der Datei server.xml definiert werden.
Attribut | Beschreibung | Standardwert |
---|---|---|
id | Das Attribut id definiert eine eindeutige ID des Keystore-Objekts. | Es gibt keinen Standardwert. Ein eindeutiger Name muss angegeben werden. |
location | Das Attribut location gibt den Namen der Keystoredatei an. Der Wert kann den absoluten Pfad zur Datei enthalten. Wird kein absoluter Pfad angegeben, sucht der Code die Datei im Verzeichnis ${server.output.dir}/resources/security. | In der SSL-Minimalkonfiguration wird ${server.output.dir}/resources/security als Position der Datei angenommen. |
type | Das Attribut type gibt den Typ des Keystore an. Prüfen Sie, ob der angegebene Keystore-Typ vom ausgeführten SDK unterstützt wird. | Der Standardwert ist jks. |
password | Das Attribut password gibt das Kennwort an, das zum Laden der Keystoredatei verwendet wird. Das Kennwort kann in Klartext oder in verschlüsselter Form gespeichert werden. Informationen dazu, wie das Kennwort verschlüsselt wird, finden Sie in der Beschreibung der Option securityUtility encode. | Angabe erforderlich. |
provider | Das Attribut provider legt den Provider fest, der zum Laden des Keystore verwendet wird. Für einige Keystore-Typen ist ein anderer Provider als das Standard-SDK erforderlich. | Standardmäßig ist kein Provider angegeben. |
fileBased | Das Attribut fileBased gibt an, ob der Keystore dateibasiert ist. | Der Standardwert ist true. |
pollingRate | Das Intervall, in dem der Server nach Aktualisierungen für eine Keystore-Datei sucht. | 500ms. |
updateTrigger | Die Methode, mit der das Laden einer Keystore-Datei auf dem Server ausgelöst wird. Geben Sie polled an, damit der Server die Keystore-Datei auf Änderungen prüft, mbean, damit der Server auf eine mbean wartet, um die Keystore-Datei erneut zu laden, oder disabled, um die Dateiüberwachung zu inaktivieren. | disabled. |
Keystore-Dateien können vom Server erneut geladen werden, wenn das Attribut updateTrigger auf polled oder mbean gesetzt ist. Wenn das Attribut polled festgelegt ist, fragt der Server die Keystore-Datei in dem mit dem Attribut pollingRate festgelegten Intervall auf Änderungen ab. Wenn das Attribut updateTrigger auf mbean gesetzt ist, lädt der Server die Keystore-Datei erneut, wenn er von der MBean WebSphere:service=com.ibm.ws.kernel.filemonitor.FileNotificationMBean benachrichtigt wird. Die Dateiüberwachung ist standardmäßig inaktiviert.
<!-- Ein Keystore-Objekt hat defaultKeyStore aufgerufen, -->
<!-- mit dem eine Position, ein Typ und ein Kennwort festgelegt werden. Es wird angenommen, dass die Datei MyKeyStoreFile.jks -->
<!-- in ${server.output.dir}/resources/security enthalten ist. -->
<!-- Dieser Keystore ist so konfiguriert, dass Updates alle 5 Sekunden -->
<!-- abgefragt werden -->
<keyStore id="defaultKeyStore"
location="MyKeyStoreFile.jks"
type="JKS" password="myPassword"
pollingRate="5s"
updateTrigger="polled" />
<!-- Ein Keystore-Objekt hat defaultKeyStore aufgerufen, -->
<!-- mit dem eine Position, ein Typ und ein Kennwort festgelegt werden. Es wird angenommen, dass die Datei MyKeyStoreFile.jks -->
<!-- in ${server.output.dir}/resources/security enthalten ist. -->
<!-- Dieser Keystore ist so konfiguriert, dass er erneut geladen wird, -->
<!-- wenn der Server eine entsprechende MBean-Benachrichtigung empfängt -->
<keyStore id="defaultKeyStore"
location="MyKeyStoreFile.jks"
type="JKS" password="myPassword"
updateTrigger="mbean" />
Wenn Sie das server.output.dir-Verzeichnis nicht definieren, ist das server.output.dir-Verzeichnis mit dem server.config.dir-Verzeichnis identisch.
Beispiel für eine vollständige SSL-Konfiguration
- defaultSSLSettings
- mySSLSettings
<featureManager> <feature>ssl-1.0</feature>
</featureManager>
<!-- default SSL configuration is defaultSSLSettings ->
<sslDefault sslRef="defaultSSLSettings" />
<ssl id="defaultSSLSettings"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore"
clientAuthenticationSupported="true" />
<keyStore id="defaultKeyStore"
location="key.jks"
type="JKS" password="defaultPWD" />
<keyStore id="defaultTrustStore"
location="trust.jks"
type="JKS" password="defaultPWD" />
<ssl id="mySSLSettings"
keyStoreRef="myKeyStore"
trustStoreRef="myTrustStore"
clientAuthentication="true" />
<keyStore id="LDAPKeyStore"
location="${server.config.dir}/myKey.p12"
type="PKCS12"
password="{xor}CDo9Hgw=" /> <keyStore id="LDAPTrustStore"
location="${server.config.dir}/myTrust.p12"
type="PKCS12"
password="{xor}CDo9Hgw=" />