Điểm:0

Kubernetes Nginx Ingress với Cert Manager và letsencrypt không cho phép ký tự đại diện trong tên miền

lá cờ ru

Tôi có một cụm Kubernetes tự lưu trữ với Nginx Ingress. Trình quản lý chứng chỉ cũng đang chạy trên cụm mà tôi cố gắng lấy chứng chỉ SSL hợp lệ bằng Letsencrypt. Tất cả đều hoạt động và tôi nhận được chứng chỉ hợp lệ cho example.com, www.example.com hoặc app1.example.com, nhưng không dành cho ký tự đại diện chung *.example.com. Nếu tôi cố gắng nhập một ký tự đại diện theo bất kỳ cách nào trong mục nhập của mình trong sec.tls.hosts, thì không có chứng chỉ nào được tạo cho tôi. tôi nhận được đầu ra cho

kubectl lấy chứng chỉ

TÊN SẴN SÀNG BÍ MẬT TUỔI
tls-test-cert Sai tls-elect-cert 20h

kubectl lấy Chứng chỉRequest

TÊN ĐƯỢC PHÊ DUYỆT TỪ CHỐI SẴN SÀNG PHÁT HÀNH NGƯỜI YÊU CẦU TUỔI
tls-test-cert-8jw75 Đúng Sai letencrypt-staging system:serviceaccount:cert-manager:cert-manager 18 phút

kubectl mô tả CertificateRequest

[…]
Trạng thái:
  Điều kiện:
    Thời gian chuyển đổi cuối cùng: 2022-02-27T13:54:38Z
    Thông báo: Yêu cầu chứng chỉ đã được phê duyệt bởi cert-manager.io
    Lý do: cert-manager.io
    Trạng thái: Đúng
    Loại: Đã được phê duyệt
    Thời gian chuyển đổi cuối cùng: 2022-02-27T13:54:38Z
    Thông báo: Đang chờ phát hành chứng chỉ từ cổng đặt hàng/tls-test-cert-8jw75-1425588341: "pending"
    Lý do: Đang chờ xử lý
    Trạng thái: Sai
    Loại: Sẵn sàng
Sự kiện:
  Nhập Lý do Tuổi từ Tin nhắn
  ---- ------ ---- ---- -------
  Bình thường cert-manager.io 18m cert-manager Yêu cầu chứng chỉ đã được phê duyệt bởi cert-manager.io
  Đơn đặt hàng bình thườngĐã tạo 18 triệu trình quản lý chứng chỉ Cổng tài nguyên đặt hàng đã tạo/tls-test-cert-8jw75-1425588341
  Đơn hàng bình thường Đang chờ 18 triệu người quản lý chứng chỉ Đang chờ phát hành chứng chỉ từ cổng đặt hàng/tls-test-cert-8jw75-1425588341: ""

My Nginx Ingress: (Tôi đã hoán đổi tên miền của mình thành example.com cho bài đăng này)

---
apiVersion: mạng.k8s.io/v1
loại: Xâm nhập
metadata:
  Tên: quản lý kiểm tra
  không gian tên: cổng
  chú thích:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: "letsencrypt-staging"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
thông số kỹ thuật:
  ingressClassName: nginx
  tls:
  - secretName: tls-test-cert
    máy chủ:
      - ví dụ.com
      - '*.example.com'
  quy tắc:
    - máy chủ: example.com
      http:
        con đường:
          - con đường: /
            pathType: Tiền tố
            phụ trợ:
              dịch vụ:
                tên: cổng kiểm tra
                Hải cảng:
                  số: 80
    - máy chủ: '*.example.com'
      http:
        con đường:
          - con đường: /
            pathType: Tiền tố
            phụ trợ:
              dịch vụ:
                tên: cổng kiểm tra
                Hải cảng:
                  số: 80

Tổ chức phát hành: (Tôi đã chỉnh sửa lại email của mình tại đây)

apiVersion: cert-manager.io/v1
loại: Tổ chức phát hành
metadata:
  tên: letencrypt-staging
  không gian tên: cert-manager
thông số kỹ thuật:
  tốt:
    máy chủ: https://acme-staging-v02.api.letsencrypt.org/directory
    email: *******
    privateKeySecretRef:
      tên: letencrypt-staging
    người giải quyết:
      -http01:
          xâm nhập:
            lớp: nginx

Proxy ngược của tôi (cổng thử nghiệm) chắc chắn hoạt động và chuyển tiếp tất cả các tên miền phụ đến trang web của tôi. Cảm ơn trước cho bất kỳ ý tưởng như những gì có thể gây ra điều này.

lá cờ in
Xin chào TaLeDa chào mừng đến với SF. Theo hiểu biết tốt nhất của tôi, [người ta không thể cấp chứng chỉ ký tự đại diện bằng cách sử dụng trình xác minh http01](https://cert-manager.io/docs/faq/sync-secrets/#serving-a-wildcard-to-ingress-resources-in -different-namespaces-default-ssl-certificate) (vì nó sẽ yêu cầu các yêu cầu http không giới hạn để chứng minh tất cả các máy chủ `*`). Bạn sẽ vui hơn khi yêu cầu chứng chỉ [`wildcard: true`](https://cert-manager.io/docs/reference/api-docs/#acme.cert-manager.io/v1.Challenge) và sau đó chỉ cần gắn nó vào Ingress của bạn. Chúc may mắn!
TaLeDa avatar
lá cờ ru
Cảm ơn bạn, điều đó đã giải quyết vấn đề của tôi. Chúc một ngày tốt lành.
lá cờ in
Sau đó, vui lòng [thêm và chấp nhận câu trả lời của riêng bạn](https://serverfault.com/help/self-answer), để những người khác có thể hưởng lợi từ trải nghiệm của bạn -- đó là toàn bộ quan điểm của trang web này
Điểm:0
lá cờ ru

Cảm ơn sự giúp đỡ, tôi đã có thể giải quyết vấn đề của mình:

Về cơ bản, tôi phải tìm một cách tiếp cận mới vì không thể cấp chứng chỉ thẻ đại diện với http01. (xem tại đây: https://cert-manager.io/docs/configuration/acme/) Sau khi nghiên cứu một chút, tôi đã đi đến kết luận rằng việc sử dụng bộ giải dns01 là hợp lý nhất. Tài liệu có thể được tìm thấy ở đây: https://cert-manager.io/docs/configuration/acme/dns01/

Do cấu hình của dns01 phụ thuộc nhiều vào nhà cung cấp DNS của bạn nên tôi sẽ không công bố giải pháp của mình ở đây, nhưng bạn có thể dễ dàng tìm thấy một cấu hình hữu ích trong tài liệu.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.