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 |
|
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
######## 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.
curl --insecure 'https://localhost:9200' -u admin:admin
oder
curl --cacert <opensearch>/config/root-ca.pem -u admin:admin
BPC/Karaf anpassen
-
Den OpenSearch Public Key in den Virtimo Truststore importieren
-
Sie befinden sich im entsprechenden Karaf-Verzeichnis:
cd /home/virtimo/installs/bpc4xx/karaf/etc/virtimo/ssl
-
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
-
-
Zugriff auf OpenSearch auf HTTPS umstellen
-
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
-