Inhaltsverzeichnis

Benno REST mit SSL-Verschlüsselung

Achtung! Dieses Dokument beschreibt die Konfiguration von Benno REST ab Version 2.10.0. Die Erläuterung zur Konfiguration der SSL-Verschlüsselung von älteren Versionen von Benno REST finden Sie hier.

Konfiguration von Jetty

Zur Konfiguration eines SSL-Connectors wird die Konfigurationsdatei /etc/benno/jetty.xml erweitert.

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<!-- Configuration for bennorest / jetty >= 2.10 -->
<Configure id="BennoREST-2.10.0" class="org.eclipse.jetty.server.Server">
  <Call name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server">
          <Ref refid="BennoREST-2.10.0"/>
        </Arg>
        <Set name="host"></Set>
        <Set name="port">21080</Set>
      </New>
    </Arg>
  </Call>
  <Call name="addConnector">
    <Arg>
      <New id="httpsConnector" class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server">
          <Ref refid="BennoREST-2.10.0"/>
        </Arg>
        <Arg>
          <New class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
            <Set name="keyStorePath">/etc/benno/keystore</Set>
            <Set name="keyStorePassword">mhO3WjtG7Y5UDgi2NWxL</Set>
            <Set name="keyManagerPassword">mhO3WjtG7Y5UDgi2NWxL</Set>
            <Set name="trustStorePath">/etc/benno/keystore</Set>
            <Set name="trustStorePassword">mhO3WjtG7Y5UDgi2NWxL</Set>
          </New>
        </Arg>
        <Arg name="factories">
          <Array type="org.eclipse.jetty.server.ConnectionFactory">
            <Item>
              <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                <Arg name="config">
                  <New id="config" class="org.eclipse.jetty.server.HttpConfiguration">
                    <Call name="addCustomizer">
                      <Arg>
                        <New class="org.eclipse.jetty.server.SecureRequestCustomizer">
                          <Arg name="sniRequired" type="boolean">
                            <Property name="jetty.ssl.sniRequired" default="false"/>
                          </Arg>
                          <Arg name="sniHostCheck" type="boolean">
                            <Property name="jetty.ssl.sniHostCheck" default="false"/>
                          </Arg>
                          <Arg name="stsMaxAgeSeconds" type="int">
                            <Property name="jetty.ssl.stsMaxAgeSeconds" default="-1"/>
                          </Arg>
                          <Arg name="stsIncludeSubdomains" type="boolean">
                            <Property name="jetty.ssl.stsIncludeSubdomains" default="false"/>
                          </Arg>
                        </New>
                      </Arg>
                    </Call>
                  </New>
                </Arg>
              </New>
            </Item>
          </Array>
        </Arg>
        <Set name="host">192.168.1.10</Set>
        <Set name="port">21443</Set>
        <Set name="idleTimeout">30000</Set>
      </New>
    </Arg>
  </Call>
</Configure>

Zertifikat erstellen

Der private Schlüssel und das Zertifikat werden in einem Java Keystore gespeichert. Alternativ können dies auch als PKCS#12 Datei angegeben werden. Diese Datei kann mittels OpenSSL aus den häufig vorliegenden PEM-Files erstellt werden.

openssl pkcs12 -export \
  -passout pass:mhO3WjtG7Y5UDgi2NWxL \
  -inkey keyfile.pem \
  -in certchain.pem \
  -out certchain+key.pkcs12 
chown benno:benno certchain+key.pkcs12
chmod 0440 certchain+key.pkcs12

Web-Frontend konfigurieren

In der Konfiguration von benno-web wird der URL in der Datei /etc/benno-web/benno.conf angepasst:

BASE_URL = https://rest.lw-systems.net:21443

Bei der Abfrage des REST-Backends wird das SSL-Zertifikat nicht geprüft. Falls diese Prüfung erzwungen werden soll,

muss der Konfigurations-Parameter REST_SSL_VERIFY auf „true“ gesetzt werden.

# to enable ssl certificate verification of REST server set YES
#REST_SSL_VERIFY = NO

Diese Parameter werden beim Aufbau der Session eingelesen. Daher ist es notwendig, sich nach Änderung abzumelden und wieder neu anzumelden.