【K8s教程】Nginx Ingress 控制器 TLS/HTTPS 說明


參考:https://kubernetes.github.io/ingress-nginx/user-guide/tls/

TLS Secrets

每當我們引用 TLS Secrets時,我們指的是 PEM 編碼的 X.509、RSA (2048) Secrets。

您可以使用以下命令生成自簽名證書和私鑰:

$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout ${KEY_FILE} -out ${CERT_FILE} -subj "/CN=${HOST}/O=${HOST}"

然后通過以下方式在集群中創建秘密:

kubectl create secret tls ${CERT_NAME} --key ${KEY_FILE} --cert ${CERT_FILE}

由此產生的秘密將是類型 kubernetes.io/tls.

主機名

確保相關Ingress規則指定匹配的主機名。

..
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls
..

默認 SSL 證書

NGINX 提供了將服務器配置為帶有包羅萬象的選項, server_name 用於與任何配置的服務器名稱都不匹配的請求。 此配置開箱即用,適用於 HTTP 流量。 對於HTTPS,自然需要證書。

為此,入口控制器提供了標志 --default-ssl-certificate. 此標志所指的Secret包含訪問通用服務器時要使用的默認證書。 如果未提供此標志,NGINX 將使用自簽名證書。

例如,如果您有一個 TLS Secret 在default命名空間里面的foo-tls,在 nginx-controller部署里面添加 --default-ssl-certificate=default/foo-tls。

默認證書也將用於入口 tls:沒有secretName選項的部分。

通過重定向強制執行服務器端 HTTPS

默認情況下,如果為該 Ingress 啟用了 TLS,控制器會使用 308 永久重定向響應將 HTTP 客戶端重定向到 HTTPS 端口 443。

這可以使用全局禁用 ssl-redirect: "false"在 NGINX 配置映射中 ,或每個 Ingress 中 nginx.ingress.kubernetes.io/ssl-redirect: "false"特定資源中的注釋。

在集群外使用 SSL 卸載(例如 AWS ELB)時,即使沒有可用的 TLS 證書,強制重定向到 HTTPS 也可能很有用。 這可以通過使用 nginx.ingress.kubernetes.io/force-ssl-redirect: "true"特定資源中的注釋。

默認 TLS 版本和Ciphers

為了提供最安全的基線配置,nginx-ingress 默認僅使用 TLS 1.2 和 1.3,以及一組 安全的 TLS Secrets。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM