Quản lý chứng chỉ Istio với việc tích hợp chứng chỉ CA - B88bet Win

| Jan 22, 2025 min read

Ngày 10 tháng 01 năm 2021 - Máy tính

Bài viết này sẽ hướng dẫn quản trị viên cách sử dụng chứng chỉ gốc, chứng chỉ được cấp phát và khóa bí mật để cấu hình CA (Chứng nhận Cơ quan) cho Istio. Istio CA sử dụng khóa riêng và chứng chỉ được cấp bởi CA trung gian, trong khi CA trung gian này lại được cấp bởi CA gốc. Nhờ vậy, Istio CA có thể cấp phát chứng chỉ gốc và khóa riêng cho các khối lượng công việc. Sơ đồ phân cấp của CA như sau:

![](Hình ảnh được trích từ “Plug in CA Certificates”)

Sau đây là hướng dẫn về cách tạo và tích hợp CA cho Istio.

1. Tích hợp chứng chỉ và khóa tải game 789 club tài xỉu riêng vào cụm

Trước tiên, hãy truy cập vào thư mục cài đặt Istio tại /usr/local/istio-1.8.1, tạo thư mục certs rồi di chuyển vào thư mục đó.

$ cd /usr/local/istio-1.8.1
$ mkdir certs
$ cd certs

Tiếp theo, sử dụng lệnh dưới đây để tạo chứng chỉ gốc và khóa riêng:

$ make -f ../tools/certs/Makefile.selfsigned.mk root-ca

Lệnh trên sẽ tạo ra bốn tệp tin:

FILE MÔ TẢ
root-cert.pem Chứng chỉ gốc
root-key.pem Khóa riêng gốc
root-ca.conf Cấu hình openssl dùng để tạo chứng chỉ gốc
root-cert.csr Yêu cầu đăng ký chứng chỉ (CSR) của chứng chỉ gốc

Sau đó, sử dụng lệnh dưới đây để tạo chứng chỉ và khóa riêng của trung gian:

$ make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts

Lệnh này sẽ tạo ra bốn tệp tin trong thư mục cluster1:

FILE MÔ TẢ
ca-cert.pem Chứng chỉ trung gian
ca-key.pem Khóa riêng trung gian
cert-chain.pem Chuỗi chứng chỉ được sử dụng bởi istiod
root-cert.pem Chứng chỉ gốc

Cuối cùng, tạo không gian tên istio-system và tạo Secret cacerts dựa trên các tệp tin đã được sinh ra trong thư mục cluster1:

$ kubectl create ns istio-system
$ kubectl create secret generic cacerts -n istio-system \
   --from-file=cluster1/ca-cert.pem \
   --from-file=cluster1/ca-key.pem \
   --from-file=cluster1/root-cert.pem \
   --from-file=cluster1/cert-chain.pem

2. Triển khai Istio và dịch vụ mẫu

Đặt chế độ triển khai thành demo và cài đặt Istio, lúc này Istio CA sẽ đọc chứng chỉ và khóa riêng từ cacerts:

$ istioctl install --set profile=demo

Sau đó, truy cập vào thư mục gốc của Istio, tạo không gian tên istio-demo, và triển khai dịch vụ mẫu httpbin cũng như dịch vụ kiểm tra sleep trong không gian tên này:

$ cd /usr/local/istio-1.8.1
$ kubectl create ns istio-demo
$ kubectl apply -f <(istioctl kube-inject -f samples/httpbin/httpbin.yaml) -n istio-demo
$ kubectl apply -f <(istioctl kube-inject -f samples/sleep/sleep.yaml) -n istio-demo

Tiếp theo, sử dụng lệnh dưới đây để chỉ định rằng các khối lượng công việc trong không gian tên istio-demo chỉ chấp nhận lưu lượng mTLS hai chiều:

$ kubectl apply -n istio-demo -f - <<EOF
heredoc> apiVersion: "security.istio.io/v1beta1" [tải game 789win](/post/perceptron-python-implementation/) 
kind: "PeerAuthentication"
metadata:
 name: "default"
spec:
 mtls:
  mode: STRICT
heredoc> EOF

3. Kiểm tra chứng chỉ

Dưới đây, chúng ta sẽ xác minh rằng các khối lượng công việc đã sử dụng chứng chỉ do CA mà chúng ta tích hợp trước đó cấp phát.

Trước hết, chờ khoảng 20 giây để quy tắc mTLS được cấu hình có hiệu lực. Sau đó, sử dụng lệnh dưới đây để truy cập Sidecar istio-proxy của sleep và thử lấy chuỗi chứng chỉ của httpbin:

$ kubectl exec "$(kubectl get pod -l app=sleep -n istio-demo -o jsonpath={.items..metadata.name})" -c istio-proxy -n istio-demo -- openssl s_client -showcerts -connect httpbin.istio-demo:8000 > httpbin-proxy-cert.txt

Kết quả trả về lỗi "verify error:num=19:self signed certificate in certificate chain", điều này đúng như mong đợi.

Kiểm tra nội dung của tệp tin httpbin-proxy-cert.txt, bạn sẽ thấy có bốn bộ chứng chỉ, hãy sao chép chúng ra và đặt tên lần lượt là proxy-cert-i.pem (i=1,2,3,4).

Tiếp theo, sử dụng lệnh dưới đây để xác minh rằng chứng chỉ gốc phù hợp với chứng chỉ do quản trị viên cấp:

$ openssl x509 -in certs/cluster1/root-cert.pem -text -noout > /tmp/root-cert.crt.txt
$ openssl x509 -in ./proxy-cert-3.pem -text -noout > /tmp/pod-root-cert.crt.txt
$ diff -s /tmp/root-cert.crt.txt /tmp/pod-root-cert.crt.txt
Files /tmp/root-cert.crt.txt and /tmp/pod-root-cert.crt.txt are identical

Sau đó, sử dụng lệnh dưới đây để xác minh rằng chứng chỉ CA phù hợp với chứng chỉ do quản trị viên cấp:

$ openssl x509 -in certs/cluster1/ca-cert.pem -text -noout > /tmp/ca-cert.crt.txt
$ openssl x509 -in ./proxy-cert-2.pem -text -noout > /tmp/pod-cert-chain-ca.crt.txt
$ diff -s /tmp/ca-cert.crt.txt /tmp/pod-cert-chain-ca.crt.txt
Files /tmp/ca-cert.crt.txt and /tmp/pod-cert-chain-ca.crt.txt are identical

Cuối cùng, sử dụng lệnh dưới đây để xác minh rằng chuỗi chứng chỉ gốc phù hợp với chuỗi chứng chỉ của khối lượng công việc:

$ openssl verify -CAfile <(cat certs/cluster1/ca-cert.pem certs/cluster1/root-cert.pem) ./proxy-cert-1.pem
./proxy-cert-1.pem: OK

4. Dọn dẹp môi trường

Sử dụng lệnh dưới đây để xóa chứng chỉ:

$ cd /usr/local/istio-1.8.1
$ rm proxy-cert-*.pem
$ rm httpbin-proxy-cert.txt
$ rm [Khuyến Mãi 88king](/post/comparable-and-comparator-in-java/)  -rf certs

Sử dụng lệnh dưới đây để xóa Secret cacerts và các không gian tên istio-demo, istio-system:

$ kubectl delete secret cacerts -n istio-system
$ kubectl delete ns istio-demo istio-system

Tóm tắt bài viết, chúng ta đã giới thiệu cách Istio CA hoạt động và thực hiện kiểm tra bằng cách sử dụng dịch vụ mẫu httpbin.

[1] Istio Plug in CA Certificates

![](Thẻ #Mạng Dịch Vụ #Istio)