赞
踩
安装elasticsearch的docker版本,需要设置ssl,但是没有证书,能生成一个自签的证书,然后搭配到elasticsearch,生成相关ssl设置的教程
要在Elasticsearch Docker安装中使用自签名SSL证书,你可以按照以下步骤操作:
步骤 1: 安装 OpenSSL
确保你的系统上安装了OpenSSL。在大多数Linux发行版和MacOS上,OpenSSL通常已经预安装了。如果没有,你可以通过包管理器安装它。
步骤 2: 生成自签名证书
创建证书密钥:
openssl genrsa -out rootCA.key 4096
创建根证书(CA),内容随便填:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
创建服务器证书的密钥:
openssl genrsa -out elasticsearch.key 4096
创建证书签名请求(CSR),内容随便填:
openssl req -new -key elasticsearch.key -out elasticsearch.csr
创建配置文件以指定证书选项:
创建一个文件 v3.ext ,以包含需要的DNS和IP地址,注意ip地址一定要设置准确,不然后面无法使用,例如:
- authorityKeyIdentifier=keyid,issuer
- basicConstraints=CA:FALSE
- keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
- subjectAltName = @alt_names
-
- [alt_names]
- DNS.1 = elasticsearch
- IP.1 = 127.0.0.1 #注意,如果是docker安装的一定要设置这个ip为容器ip地址,不然无法使用,可以
- IP.2 = 172.17.0.2
- IP.3 = 172.17.0.3
- #设置多个ip....
使用自己的CA签署SSL证书,如果ip不对的时候修改上面的v3.ext,从新运行下面的命令,然后移动到certs目录下面:
openssl x509 -req -in elasticsearch.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out elasticsearch.crt -days 500 -sha256 -extfile v3.ext
步骤 3: 设置Docker容器
在设置Elasticsearch Docker容器时,需要将证书挂载到容器内部,并配置Elasticsearch以使用这些证书。
创建一个docker-compose.yml文件,如下所示:
networks: 1panel-network: external: true services: elasticsearch: container_name: ${CONTAINER_NAME} deploy: resources: limits: cpus: ${CPUS} memory: ${MEMORY_LIMIT} environment: - discovery.type=single-node - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - ${P_ES_JAVA_OPTS} - xpack.security.enabled=true - xpack.security.transport.ssl.enabled=true - xpack.security.transport.ssl.verification_mode=certificate - xpack.security.transport.ssl.key=certs/elasticsearch.key - xpack.security.transport.ssl.certificate=certs/elasticsearch.crt - xpack.security.transport.ssl.certificate_authorities=certs/rootCA.pem - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.key=certs/elasticsearch.key - xpack.security.http.ssl.certificate=certs/elasticsearch.crt - xpack.security.http.ssl.certificate_authorities=certs/rootCA.pem image: docker.elastic.co/elasticsearch/elasticsearch:8.13.0 #使用那个版本就修改那个版本 labels: createdBy: Apps networks: - 1panel-network ports: - ${HOST_IP}:${PANEL_APP_PORT_HTTP}:9200 restart: always ulimits: memlock: hard: -1 soft: -1 nofile: hard: 65536 soft: 65536 volumes: - ./data/data:/usr/share/elasticsearch/data - ./data/backup:/usr/share/elasticsearch/backup - ./data/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./data/conf/certs:/usr/share/elasticsearch/config/certs version: "3"
本地没有目录的,先新建相应的本地目录和文件,我的elasticsearch.yml文件配置如下:
- cluster.name: "docker-cluster"
- network.host: 0.0.0.0
- path.repo: ["/usr/share/elasticsearch/backup"]
- http.cors.enabled: true
- http.cors.allow-origin: "*"
- http.cors.allow-headers: X-Requested-With,Content-Type,Content-Length,Authorization
将证书和密钥放在你的项目目录中的 certs 文件夹中。
步骤 4: 启动Elasticsearch
使用 docker-compose up 命令启动Elasticsearch容器。
步骤 5: 验证并设置密码
docker ps 可以查看所有docker的信息,找到你刚刚新建的容器名修改下面的命令,进入容器
- docker container exec -it <容器名> bash
-
- #进入后运行
-
- ./bin/elasticsearch-setup-passwords auto
如果一切正常就显示如下图,如果报ip错误,则按照步骤2中的v3.ext ip设置重新设置运行后面的命令:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。