OpenSearch per HTTPS

In der Voreinstellung wird HTTP zur Kommunikation mit OpenSearch verwendet. In den folgenden Schritten wird exemplarisch gezeigt, wie dies auf HTTPS umgestellt werden kann. Dabei kommen selbst signierte Zertifikate zum Einsatz und dies bezieht sich auf die OpenSearch-Version >= 2.12.0.

OpenSearch verwendet standardmäßig den Port 9200 für die HTTP/HTTPS-Kommunikation. Für die interne Kommunikation zwischen den Nodes in einem OpenSearch-Cluster wird der Transport Layer genutzt, der den Port 9300 verwendet. Das sind also zwei unterschiedliche Punkte, die beachtet werden müssen.

Info

In diesem Beispiel werden die selbst signierten Demo Zertifikate von OpenSearch verwendet. Diese müssen ersetzt werden. Siehe dazu OpenSearch Dokumentation.

Das OpenSearch Security Plugin stellt die Funktionalitäten zur Verfügung. Die umfangreichen Konfigurationsmöglichkeiten sind in der OpenSearch Security Dokumention nachzulesen.

Vorbereitung

Verwendete Verzeichnisse dieses Beispiels:

OpenSearch

/home/virtimo/installs/bpc4xx/opensearch

Karaf

/home/virtimo/installs/bpc4xx/karaf

OpenSearch Security initialisieren

Als Erstes muss die folgende Zeile aus der OpenSearch-Konfigurationsdatei <opensearch>/config/opensearch.yml entfernt oder auf false gesetzt werden, um das OpenSearch Security Plugin zu aktivieren:

plugins.security.disabled: true

Security Script ausführbar machen

cd /home/virtimo/installs/bpc4xx/opensearch
chmod +x plugins/opensearch-security/tools/install_demo_configuration.sh

Security Script ausführen

cd /home/virtimo/installs/bpc4xx/opensearch
./plugins/opensearch-security/tools/install_demo_configuration.sh

Wie folgt die Fragen des Security Scripts beantworten

**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
OpenSearch Security Demo Installer
 ** Warning: Do not use on production or public reachable systems **
Install demo certificates? [y/N] y
Initialize Security Modules? [y/N] y
Enable cluster mode? [y/N] n

Dies erzeugt im <opensearch>/config Verzeichnis die folgenden selbst signierten Zertifikatsdateien:

  • root-ca.pem

  • esnode.pem

  • esnode-key.pem

  • kirk.pem

  • kirk-key.pem

und registriert diese in der OpenSearch-Konfigurationsdatei <opensearch>/config/opensearch.yml

Konfigurationsdatei wurde vom Security Script wie folgt erweitert
######## Start OpenSearch Security Demo Configuration ########
# WARNING: revise all the lines below before you go into production
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test, C=de

plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########

Durch das Security Script wird auch automatisch der Benutzer admin mit dem Passwort admin angelegt. OpenSearch sollte sich nun starten lassen.

Zugriff per CURL testen
curl --insecure 'https://localhost:9200' -u admin:admin

oder

curl --cacert <opensearch>/config/root-ca.pem -u admin:admin

BPC/Karaf anpassen

  1. Den OpenSearch Public Key in den Virtimo Truststore importieren

    1. Sie befinden sich im entsprechenden Karaf-Verzeichnis:

      cd /home/virtimo/installs/bpc4xx/karaf/etc/virtimo/ssl
    2. Den OpenSearch Public Key importieren und vertrauen

      keytool -import \
        -file /home/virtimo/installs/bpc4xx/opensearch/config/root-ca.pem \
        -alias opensearch \
        -keystore virtimo_truststore.jks \
        -storepass virtimo \
        -storetype jks
  2. Zugriff auf OpenSearch auf HTTPS umstellen

    1. Dazu folgende Einstellungen in der Konfigurationsdatei <karaf>/etc/de.virtimo.bpc.core.cfg anpassen:

      Einstellung Alt Neu

      de.virtimo.bpc.core.opensearch.scheme

      http

      https

      de.virtimo.bpc.core.opensearch.host

      localhost

      localhost

      de.virtimo.bpc.core.opensearch.username

      admin

      de.virtimo.bpc.core.opensearch.password

      admin


Keywords: