@@ -0,0 +1,35 @@
|
|||||||
|
# Установка Opensearch
|
||||||
|
Ссылка на офф доку https://docs.opensearch.org/latest/install-and-configure/install-opensearch/tar/
|
||||||
|
Установка опенсерча производится из архива.
|
||||||
|
Стендэлон
|
||||||
|
Подготавливаем ноду для установки. Все это дело работает на джаве. И хоть в архиве опенсерча уже есть жаба лучше поставить ее прямо на машину, что бы было проще работать
|
||||||
|
```
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
sudo apt install openjdk-25-jdk
|
||||||
|
```
|
||||||
|
Отключим свап и настроем виртуальную память хоста
|
||||||
|
```
|
||||||
|
sudo vim /etc/sysctl.conf
|
||||||
|
|
||||||
|
vm.max_map_count=262144
|
||||||
|
|
||||||
|
sudo sysctl -p
|
||||||
|
cat /proc/sys/vm/max_map_count
|
||||||
|
```
|
||||||
|
После обновления и установки жабы, лучше всего перезагрузится. Далее мы качаем архив с опенсерчем с оффсайта
|
||||||
|
```
|
||||||
|
wget https://artifacts.opensearch.org/releases/bundle/opensearch/3.5.0/opensearch-3.5.0-linux-x64.tar.gz
|
||||||
|
```
|
||||||
|
```
|
||||||
|
Распакуем архив в папку
|
||||||
|
```
|
||||||
|
tar -xvf opensearch-3.5.0-linux-x64.tar.gz -С /etc/opensearch
|
||||||
|
```
|
||||||
|
Создадим папку для хранения сертификатов и перейдем в нее.
|
||||||
|
```
|
||||||
|
sudo mkdir /etc/opensearch/ssl
|
||||||
|
cd /etc/opensearch/ssl
|
||||||
|
bash ssl.sh
|
||||||
|
```
|
||||||
|
Выполним скрипт ssl.sh (лежит в доке как пример) для создания самоподписанных сертификатов и хранилища сертификатов. СОздадутся корневой сертификат ЦА. Так же создастся на его основе админский сертификат и сертификаты для каждой ноды. Это нужно что бы общение между нодами и дашбордой были зашифрованы. Так же выпустится админский серт для зашифрованного подключения админа.
|
||||||
|
После завершения подготовки требуется нарисовать кофниг. Конфиг имеет формат YAML и различается в зависимости от кластера или стендэлон опенсерча
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
opensearch=3.5.0
|
||||||
|
jdk=25.0.2+10-LTS
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
cluster.name: kal-cluster # Имя кластера
|
||||||
|
node.name: opensearch-1 # Имя ноды кластера
|
||||||
|
|
||||||
|
# Включение плагина безопасности для шифрования трафика между нодами
|
||||||
|
plugins.security.ssl.transport.keystore_filepath: /etc/opensearch/config/ssl/keystore.jks # Путь к файлу keystore.jks, который содержит ключи к сертификатам
|
||||||
|
plugins.security.ssl.transport.keystore_password: MyCertPassword # Пароль от кейстора
|
||||||
|
plugins.security.ssl.transport.keystore_keypassword: MyCertPassword # Пароль от приватного ключа внутри кейстора
|
||||||
|
plugins.security.ssl.transport.truststore_filepath: /etc/opensearch/config/ssl/truststore.jks # Путь к хранилищу сертификатов
|
||||||
|
plugins.security.ssl.transport.truststore_password: MyCertPassword # Пароль от хранилища сертификатов
|
||||||
|
|
||||||
|
#Включение плагина безопасности для шифрования трафика между дашбордом и опенсерчом
|
||||||
|
#plugins.security.ssl.http.enabled: # Включение шифрования при обращении к REST api. По умолчанию выключено. При включении http будет принудительно отключен и всегда будет использоваться https
|
||||||
|
plugins.security.ssl.http.keystore_filepath: /etc/opensearch/config/ssl/keystore.jks # Путь к файлу keystore.jks, который содержит ключи к сертификатам
|
||||||
|
plugins.security.ssl.http.keystore_password: MyCertPassword # Пароль от кейстора
|
||||||
|
plugins.security.ssl.http.keystore_keypassword: MyCertPassword # Пароль от приватного ключа внутри кейстора
|
||||||
|
plugins.security.ssl.http.truststore_filepath: /etc/opensearch/config/ssl/truststore.jks # Путь к хранилищу сертификатов
|
||||||
|
plugins.security.ssl.http.truststore_password: MyCertPassword # Пароль от хранилища сертификатов
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Root CA
|
||||||
|
openssl genrsa -out root-ca-key.pem 2048
|
||||||
|
openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-1.sailor.com" -out root-ca.pem -days 730 \
|
||||||
|
-addext 'basicConstraints = critical, CA:TRUE, pathlen:0' \
|
||||||
|
-addext 'keyUsage = critical, keyCertSign, cRLSign' \
|
||||||
|
-addext 'authorityKeyIdentifier = keyid'
|
||||||
|
# Admin cert
|
||||||
|
openssl genrsa -out admin-key-temp.pem 2048
|
||||||
|
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
|
||||||
|
openssl req -new -key admin-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=grigory/emailAddress=medik19999@mail.ru" -out admin.csr
|
||||||
|
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
|
||||||
|
# Node cert 1
|
||||||
|
openssl genrsa -out node1-key-temp.pem 2048
|
||||||
|
openssl pkcs8 -inform PEM -outform PEM -in node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node1-key.pem
|
||||||
|
openssl req -new -key node1-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-1.sailor.com" -out node1.csr
|
||||||
|
echo 'subjectAltName=DNS:opensearch-1.sailor.com' > node1.ext
|
||||||
|
openssl x509 -req -in node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node1.pem -days 730 -extfile node1.ext
|
||||||
|
# Node cert 2
|
||||||
|
openssl genrsa -out node2-key-temp.pem 2048
|
||||||
|
openssl pkcs8 -inform PEM -outform PEM -in node2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node2-key.pem
|
||||||
|
openssl req -new -key node2-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-2.sailor.com" -out node2.csr
|
||||||
|
echo 'subjectAltName=DNS:opensearch-2.sailor.com' > node2.ext
|
||||||
|
openssl x509 -req -in node2.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node2.pem -days 730 -extfile node2.ext
|
||||||
|
# Client cert
|
||||||
|
openssl genrsa -out client-key-temp.pem 2048
|
||||||
|
openssl pkcs8 -inform PEM -outform PEM -in client-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out client-key.pem
|
||||||
|
openssl req -new -key client-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-2.sailor.com" -out client.csr
|
||||||
|
echo 'subjectAltName=DNS:opensearch-3.sailor.com' > client.ext
|
||||||
|
openssl x509 -req -in client.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out client.pem -days 730 -extfile client.ext
|
||||||
|
# Convert node certificate
|
||||||
|
cat root-ca.pem node1.pem node1-key.pem > combined-node1.pem
|
||||||
|
echo "Enter password for node1-cert.p12"
|
||||||
|
openssl pkcs12 -export -in combined-node1.pem -out node1-cert.p12 -name node1
|
||||||
|
echo "Enter password for keystore.jks"
|
||||||
|
keytool -importkeystore -srckeystore node1-cert.p12 -srcstoretype pkcs12 -destkeystore keystore.jks
|
||||||
|
|
||||||
|
# Convert admin certificate
|
||||||
|
cat root-ca.pem admin.pem admin-key.pem > combined-admin.pem
|
||||||
|
echo "Enter password for admin-cert.p12"
|
||||||
|
openssl pkcs12 -export -in combined-admin.pem -out admin-cert.p12 -name admin
|
||||||
|
echo "Enter password for keystore.jks"
|
||||||
|
keytool -importkeystore -srckeystore admin-cert.p12 -srcstoretype pkcs12 -destkeystore keystore.jks
|
||||||
|
|
||||||
|
# Import certificates to truststore
|
||||||
|
keytool -importcert -keystore truststore.jks -file root-ca.pem -storepass changeit -trustcacerts -deststoretype pkcs12 # Сменить пароль
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm admin-key-temp.pem
|
||||||
|
rm admin.csr
|
||||||
|
rm node1-key-temp.pem
|
||||||
|
rm node1.csr
|
||||||
|
rm node1.ext
|
||||||
|
rm node2-key-temp.pem
|
||||||
|
rm node2.csr
|
||||||
|
rm node2.ext
|
||||||
|
rm client-key-temp.pem
|
||||||
|
rm client.csr
|
||||||
|
rm client.ext
|
||||||
|
rm combined-admin.pem
|
||||||
|
rm combined-node1.pem
|
||||||
Reference in New Issue
Block a user