Để sử dụng OpenSSL để tạo chứng chỉ SSL và cấu hình cho Elasticsearch, dưới đây là hướng dẫn chi tiết từ A đến Z. Chúng ta sẽ thực hiện các bước sau:
Tạo khóa riêng và chứng chỉ tự ký. Cấu hình Elasticsearch để sử dụng SSL. Tạo deployment file cho Elasticsearch với cấu hình SSL. Bước 1: Tạo Khóa và Chứng Chỉ SSL Tạo khóa riêng (private key):
openssl genrsa -out elasticsearch.key 2048
Tạo yêu cầu chứng chỉ (CSR):
openssl req -new -key elasticsearch.key -out elasticsearch.csr
Bạn sẽ được yêu cầu nhập thông tin như tên miền, tên tổ chức, vv. Hãy điền thông tin theo yêu cầu. Tạo chứng chỉ tự ký:
openssl x509 -req -days 365 -in elasticsearch.csr -signkey elasticsearch.key -out elasticsearch.crt
Bước 2: Tạo Keystore Elasticsearch yêu cầu keystore để lưu trữ khóa và chứng chỉ. Bạn có thể tạo keystore bằng cách sử dụng OpenSSL hoặc sử dụng keytool nếu bạn đã cài đặt JDK. Tuy nhiên, nếu bạn muốn hoàn toàn sử dụng OpenSSL, bạn có thể làm theo cách sau:
Tạo keystore:
Trước tiên, bạn cần chuyển đổi chứng chỉ và khóa thành định dạng PKCS12:
openssl pkcs12 -export -in elasticsearch.crt -inkey elasticsearch.key -out elasticsearch.p12 -name elasticsearch -passout pass:your_keystore_password
Thay your_keystore_password bằng mật khẩu bạn muốn sử dụng cho keystore.
Bước 3: Tạo Kubernetes Secret Sau khi có keystore, bạn cần tạo Kubernetes Secret để lưu trữ keystore.
kubectl create secret generic elasticsearch-keystore --from-file=elasticsearch.p12
Bước 4: Cấu Hình Elasticsearch với SSL Dưới đây là mẫu file YAML cho deployment của Elasticsearch với cấu hình SSL:
apiVersion: apps/v1
kind: Deployment
metadata: name: elasticsearch namespace: elk
spec: replicas: 1 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: elasticsearch:8.6.0 env: - name: ELASTIC_PASSWORD value: "your_password" # Đặt mật khẩu cho người dùng elastic - name: xpack.security.enabled value: "true" - name: xpack.security.http.ssl.enabled value: "true" - name: xpack.security.http.ssl.keystore.path value: "/usr/share/elasticsearch/config/certs/elasticsearch.p12" - name: xpack.security.http.ssl.keystore.password value: "your_keystore_password" - name: xpack.security.transport.ssl.enabled value: "true" - name: xpack.security.transport.ssl.verification_mode value: "certificate" volumeMounts: - name: certs mountPath: /usr/share/elasticsearch/config/certs volumes: - name: certs secret: secretName: elasticsearch-keystore ports: - containerPort: 9200 name: elasticsearch protocol: TCP
Bước 5: Triển Khai Elasticsearch Lưu file YAML vào một file, ví dụ elasticsearch-deployment.yaml.
Triển khai Elasticsearch:
kubectl apply -f elasticsearch-deployment.yaml
Bước 6: Kiểm Tra và Tạo Enrollment Token Sau khi Elasticsearch đã được triển khai thành công, bạn có thể tạo enrollment token bằng cách chạy lệnh sau:
kubectl exec -it <pod-name> -n elk -- /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
Thay
bằng tên của pod Elasticsearch của bạn.