前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给 API 加一个 HTTPS 网关

给 API 加一个 HTTPS 网关

原创
作者头像
dandelion1990
修改2024-01-19 00:59:55
1420
修改2024-01-19 00:59:55
举报

申请 SSL 证书

可以在腾讯云上申请免费证书,按照提示添加验证域名解析内容,然后下载,一般选择 Nginx 格式

下载后得到 4 个文件

  • {host}.key:私钥
  • {host}.csr:请求签名文件
  • {host}_bundle.crt/{host}_bundle.pem:这两个内容一样,都是证书文件

如果需要可以单独下载根证书

配置 Apisix

创建一个 Apisix 的配置文件如下,填入相应的 API 服务地址,匹配 URL 路径,自定义的 key-auth,以及私钥和证书内容

代码语言:yaml
复制
upstreams:
  - id: 1
    name: "my-api"
    type: roundrobin
    nodes:
      "api-server:80": 1 # 原服务地址,原 HTTP 服务端口可以只对本机开发无需暴露给互联网
routes:
  - name: "my-api"
    uri: /*              # URL 匹配路径
    methods: ["POST"]    # 运行请求的 method
    upstream_id: 1       # 上面填的 upstream 的 id
    plugins:
      key-auth: {
        "header": "X-Apikey", # 自定义的 header,请求时按照 -H 'X-Apikey: {key}' 传入
      }
consumers:
  - username: {username}
    plugins:
      key-auth:
        key: {key}        # 为接口加上 key-auth 提升安全性
ssls:
  - sni: "{domain}"
    cert: |
      -----BEGIN CERTIFICATE-----
      {cert content}
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      ...
      -----END CERTIFICATE-----
    key: |
      -----BEGIN RSA PRIVATE KEY-----
      {private key}
      -----END RSA PRIVATE KEY-----
#END

启动 Apisix

先启动服务,可以创建 docker 网络讲服务暴露给 apisix,无需对外暴露端口

代码语言:bash
复制
docker create network ${NETWORK_NAME}
docker run -d \
    --name ${SERVER_NAME}\
    --network ${NETWORK_NAME} \
    ${SERVER_IMAGE}:0.0.1

然后启动 apisix

代码语言:bash
复制
docker run -d --restart unless-stopped \
    --network ${NETWORK_NAME} \
    --name ${APISIX_NAME} \
    -p 8080:9080/tcp \
    -p 8443:9443/tcp \
    -e APISIX_STAND_ALONE=true \
    -e TZ=Asia/Shanghai \
    -v ${PWD}/apisix.yaml:/usr/local/apisix/conf/apisix.yaml:ro \
    apache/apisix:${APISIX_VERSION}

然后可以通过 HTTPS 请求接口

代码语言:bash
复制
curl -XPOST -H 'X-Apikey: mykey' https://host:8443/ping

通过 HTTPS 和 key-auth,无法通过抓包破解接口内容,对于后端或是编译后的代码发出的请求来说已经足够安全。然而如果是 web 发起的请求,由于浏览器会解析请求详情,用户可以看到请求的 header 和里面的 apikey,还需要其他更安全的方案。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 申请 SSL 证书
  • 配置 Apisix
  • 启动 Apisix
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档