赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 操作指南
  5. 网络
  6. MSE Ingress管理
  7. 配置HTTPS证书

配置HTTPS证书

  • MSE Ingress管理
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

通过配置HTTPS证书,可以为部署在MSE Ingress网关上的业务实现传输层安全协议(TLS/SSL)加密,这是保护现代Web应用和API服务数据安全的关键措施之一。通过使用HTTPS证书,可以确保与网关进行通信的客户端和服务器之间的数据传输是经过加密保护的,有效防止未经授权的第三方窃取或篡改敏感信息,并提供强大的防御措施来抵御中间人攻击。

前提条件

  • 通过MSE Ingress完成服务对外暴露。具体操作,请参见通过MSE Ingress访问容器服务 ACK、通过MSE Ingress访问容器服务 ACK Serverlsess。

  • 拥有可信的数字证书。您可以从以下三个途径获取数字证书:

    • 从阿里云数字证书中心购买证书。具体操作,请参见购买SSL证书(额度)。

    • 从其他CA机构购买的证书。

    • 本地生成自签名证书。

配置方式介绍

MSE Ingress支持两种方式配置HTTPS证书:K8s Secret方式和MSE控制台方式。

对比项

K8s Secret方式

MSE控制台方式

适用场景

  • 通过声明式配置的方式统一管理证书。

  • 结合CI/CD流水线或Cert-Manager工具自动化管理证书。

  • 通过阿里云数字证书中心控制台统一管理证书。

  • 证书同时作用于多个云产品,例如WAF、SLB等产品。

  • 有批量部署、更换证书的诉求。

优先级

低

高

跨命名空间

不支持。

支持。

更新证书

替换K8s Secret内容。

MSE控制台更换证书,或者在阿里云数字证书中心控制台通过部署方式替换证书。

部署后端服务

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态。

  3. 在无状态页面,单击使用YAML创建资源。使用如下YAML部署一个名为httpbin的Deployment,以及一个名为httpbin的Service。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/mse-ingress/go-httpbin
              args:
                - "--version=v1"
              imagePullPolicy: Always
              name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      namespace: default
    spec:
      ports:
        - port: 8080
          protocol: TCP
      selector:
        app: httpbin

配置HTTPS证书

K8s Secret方式

您可以通过Ingress原生语义引用K8s Secret的方式为域名配置HTTPS证书。

  1. 准备域名证书。本文以自签名证书为例。

    说明

    生产场景中,您需要替换为业务真实的密钥和证书,可以从阿里云数字证书中心控制台中下载域名的密钥和证书。

    1. 执行如下命令,生成一个证书文件tls.crt和一个私钥文件tls.key。

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"
    2. 创建Secret存放TLS证书。

      1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

      2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择配置管理 > 保密字典。

      3. 单击创建。在创建面板,设置名称为tls-test,选择类型为TLS证书,将创建好的tls.crt和tls.key复制到对应的输入框中,然后单击创建。

      image.png

  2. 创建MSE Ingress并为域名foo.bar.com配置HTTPS证书。

    1. 在左侧导航栏,选择网络 > 路由。

    2. 在路由页面,单击创建 Ingress。

    3. 在创建 Ingress对话框中,选择网关类型为MSE云原生网关,并配置后端关联的服务、注解和证书等信息,然后单击确定。

      其中Ingress Class为mse,配置路由为前缀匹配,路径为/,转发请求到服务httpbin,域名的证书通过引用K8s Secret进行配置。

      16621a99be546fbf7a3f98d7013cfeda

  3. 测试HTTPS流量。通过如下命令测试流量,请将x.x.x.x替换为您的真实网关IP。您可以在Ingress列表页看到网关IP地址。

    说明

    由于本文示例使用的是自签证书,且域名未在DNS服务商备案,所以需要通过--resolve手动解析域名到网关IP,通过-k跳过证书合法性校验。

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    预期输出如下所示:

    * Connected to foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=foo.bar.com; O=foo.bar.com
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=foo.bar.com; O=foo.bar.com
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 07:49:39 GMT
    < content-length: 53
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 3
    < req-arrive-time: 1705477779046
    < resp-start-time: 1705477779049
    < x-envoy-upstream-service-time: 2
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx

MSE控制台方式

您可以直接在MSE控制台为域名配置证书,通过该方式您不再需要在Ingress上引用K8s Secret,只需配置路由规则即可。

重要

对于同一域名,MSE控制台方式优先级高于K8s Secret方式。如果您在MSE控制台和K8s Ingress中同时为同一个域名配置证书,那么优先使用控制台配置的证书。

  1. 准备域名证书。本文以自签名证书为例。

    说明

    生产场景中,您需要替换为业务真实的密钥和证书,可以从阿里云数字证书中心控制台中下载域名的密钥和证书。

    1. 执行如下命令,生成一个证书文件tls.crt和一个私钥文件tls.key。

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"

    b. 上传自签名证书至阿里云数字证书中心。具体操作,请参见上传和共享SSL证书。如果您的证书已托管在阿里云数字证书中心,则进行下一步。

  2. 创建域名并配置证书。

    1. 登录MSE网关管理控制台,并在顶部菜单栏选择地域。

    2. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。

    3. 在左侧导航栏,单击路由管理,然后选择域名页签。

    4. 单击创建域名。添加域名foo.bar.com,协议设置为HTTPS,选择对应的证书。

      image.png

  3. 创建MSE Ingress。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

    2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 路由。

    3. 在路由页面,单击创建 Ingress。

    4. 在创建 Ingress对话框中,选择网关类型为MSE Ingress,并配置后端关联的服务名称、注解等信息,然后单击确定。

      其中Ingress Class为mse,配置路由为前缀匹配,路径为/,转发请求到服务httpbin。

      说明

      此处无需配置TLS证书。

      image

  4. 测试HTTPS流量。使用如下命令测试流量,请将x.x.x.x替换为您的真实网关IP。您可以在Ingress列表页看到网关IP地址。

    说明

    由于本文示例使用的是自签证书,且域名未在DNS服务商备案,所以需要通过--resolve手动解析域名到网关IP,通过-k跳过证书合法性校验。

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    预期输出如下所示:

    * Connected to foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=foo.bar.com; O=foo.bar.com
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=foo.bar.com; O=foo.bar.com
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 08:16:27 GMT
    < content-length: 46
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 5
    < req-arrive-time: 1705479387567
    < resp-start-time: 1705479387573
    < x-envoy-upstream-service-time: 4
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx
相关文章

MSE Ingress支持的Annotation 2025-04-18 14:48

MSE Ingress已支持Nginx-Ingress核心和常用的Annotation,方便您从Nginx-Ingress无缝迁移至MSE Ingress网关。此外,针对Nginx-Ingress Annotation未支持的流量治理配置,MSE Ingress推出额外的Annotation来弥补N

MSE Ingress概述 2025-04-18 14:48

为了支持云原生应用场景,MSE云原生网关与

MSE Ingress高级用法 2025-04-18 14:48

在Kubernetes集群中,MSE Ingress对集群服务(Service)中的外部可访问的API对象进行管理,提供七层负载均衡能力。本文介绍MSE Ingress的高级用法,方便您对集群入口流量进行治理。 灰度发布

从Nginx Ingress迁移到MSE Ingress 2025-04-18 14:48

本文介绍如何通过MSE白屏化迁移工具将自建Nginx Ingress迁移至MSE Ingress。 什么是MSE Ingress MSE Ingress是在MSE云原生网关之上提供更为强大的I

授予MSE Ingress Controller访问权限 2025-04-18 14:48

如果您需要在ACK Serverless集群中通过MSE Ingress访问服务,部署服务前需要为MSE Ingress Controller授予MSE的相关访问权限。本文介绍如何对ACK Serverless集群中的MSE Ingress Controller授权。

管理MSE Ingress Controller组件 2025-04-18 14:48

阿里云容器服务ACK托管版、ACK Serverless和ACS 集群基于MSE云原生网关提供了托管的MSE Ingress Controller。本文介绍如何在ACK托管版、ACK Serverless和ACS 容器计算服务中安装、升级和卸载MSE Ingress Controller组件。 安装

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号