0

Nhiều client hoặc ứng dụng (như Node.js, Python) yêu cầu chứng chỉ định dạng PEM (.crt và .key) thay vì PKCS#12. Làm sao để trích xuất hoặc tạo chứng chỉ PEM từ Elasticsearch?

Để chuyển đổi chứng chỉ từ định dạng PKCS#12 (.p12) sang định dạng PEM (.crt và .key), công cụ xử lý mạnh mẽ và có sẵn nhất trên Linux là OpenSSL.

Dưới đây là quy trình trích xuất từng thành phần từ file http.p12 mà bạn đã tạo ở các bước trước:


1. Lấy file chứng chỉ (.crt)

Trích xuất Public Certificate. Chạy lệnh sau để trích xuất chứng chỉ công khai (không bao gồm khóa bí mật). Khi terminal yêu cầu, hãy nhập mật khẩu của file http.p12:

openssl pkcs12 -in /etc/elasticsearch/certs/http.p12 -clcerts -nokeys -out http.crt

2. Lấy khóa bí mật (.key)

Trích xuất Private Key. Lệnh này trích xuất khóa bí mật và tự động giải mã nó (nhờ cờ -nodes). Điều này giúp các ứng dụng backend (như Node.js) có thể đọc và khởi động trực tiếp mà không cần cấu hình hàm truyền mật khẩu rườm rà:

openssl pkcs12 -in /etc/elasticsearch/certs/http.p12 -nocerts -nodes -out http.key

3. Trích xuất CA Certificate (ca.crt)

Bắt buộc cho Self-signed. Vì đây là chứng chỉ tự ký, các ứng dụng client sẽ báo lỗi UNABLE_TO_VERIFY_LEAF_SIGNATURE nếu không có file CA gốc để đối chiếu và tin tưởng. Bạn cần trích xuất thêm chứng chỉ CA:

openssl pkcs12 -in /etc/elasticsearch/certs/http.p12 -cacerts -nokeys -out ca.crt

🔄 Cách thay thế: Tạo PEM trực tiếp từ Elasticsearch

Nếu không muốn gõ lệnh OpenSSL, bạn có thể sinh thẳng một bộ chứng chỉ định dạng PEM mới bằng công cụ elasticsearch-certutil kết hợp với cờ --pem:

sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca /etc/elasticsearch/certs/elastic-stack-ca.p12 --pem --name my-pem-cert --out my-pem-cert.zip

Khi giải nén file my-pem-cert.zip, bạn sẽ nhận được một thư mục chứa sẵn các file định dạng .crt và .key nguyên bản.


⚠️ Rủi ro lộ lọt khóa bí mật

File http.key được tạo ra ở Bước 2 là file văn bản thuần (không bị mã hóa). Bất kỳ ai đọc được file này đều có thể giải mã toàn bộ lưu lượng HTTPS của Elasticsearch. Hãy cấp quyền sở hữu nghiêm ngặt (chmod 600 http.key) và tuyệt đối không bao giờ commit file này lên Git.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.