Gateway API 实践之(九)FSM Gateway 的双向 TLS

FSM Gateway 流量管理策略系列:

  • 故障注入
  • 黑白名单访问控制
  • 限速
  • 重试
  • 会话保持
  • 健康检查
  • 负载均衡算法
  • TLS 上游
  • 双向 TLS

网关开启 mTLS(双向 TLS 验证)的功能是一种高级安全措施,它不仅要求服务器向客户端证明其身份,同样要求客户端提供证书以证实其身份。这种双向验证极大地增强了通信的安全性,确保只有持有有效证书的客户端能与服务器建立连接。mTLS 特别适用于对安全性要求极高的场景,如金融交易、企业内部网络或涉及敏感数据的应用。它提供了一种强化的身份验证机制,有效减少未经授权的访问,同时帮助组织遵守严格的数据保护法规。

通过实施 mTLS,网关不仅保护了数据的安全传输,也为客户端和服务器之间的交互提供了一个更加可靠和安全的环境。

这篇就带大家体验如何在 FSM Gateway 上开启 mTLS,让我们开始吧!

前置条件

  • Kubernetes 集群
  • kubectl 工具

环境准备

安装 FSM Gateway

FSM Gateway 的安装,可以参考 安装文档。这里选择 CLI 的方式安装。

下载 FSM CLI。

system=$(uname -s | tr '[:upper:]' '[:lower:]')
arch=$(uname -m | sed -E 's/x86_/amd/' | sed -E 's/aarch/arm/')
release=v1.2.0
curl -L https://github.com/flomesh-io/fsm/releases/download/$release/fsm-$release-$system-$arch.tar.gz | tar -vxzf -
./$system-$arch/fsm version
sudo cp ./$system-$arch/fsm /usr/local/bin/fsm

在安装 FSM 时启用 FSM Gateway,默认情况是不启用的。

fsm install \--set=fsm.fsmGateway.enabled=true

创建网关 TLS 证书

openssl genrsa 2048 > ca-key.pemopenssl req -new -x509 -nodes -days 365000 \-key ca-key.pem \-out ca-cert.pem \-subj '/CN=flomesh.io'openssl genrsa -out server-key.pem 2048
openssl req -new -key server-key.pem -out server.csr -subj '/CN=foo.example.com'
openssl x509 -req -in server.csr -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365

使用 CA 证书、服务器证书和密钥创建 Secret server-cert。当网关仅启用 TLS 时,只会用到服务端证书和密钥。

kubectl create namespace httpbin
#TLS cert secret
kubectl create secret generic -n httpbin simple-gateway-cert \--from-file=tls.crt=./server-cert.pem \--from-file=tls.key=./server-key.pem \--from-file=ca.crt=ca-cert.pem

部署示例应用

部署 httpbin 服务,并为其创建 TLS 网关和路由。

kubectl apply -n httpbin -f https://raw.githubusercontent.com/flomesh-io/fsm-docs/main/manifests/gateway/tls-termination.yaml

使用上面创建的 CA 证书通过网关来访问 httpbin 服务,访问成功。

curl --cacert ca-cert.pem https://foo.example.com/headers --connect-to foo.example.com:443:$GATEWAY_IP:8000
{"headers": {"Accept": "*/*","Host": "foo.example.com","User-Agent": "curl/8.1.2"}
}

网关 mTLS 验证

开启 mTLS

现在参考 GatewayTLSPolicy 文档,为网关开启 mTLS。

kubectl apply -n httpbin -f - <<EOF
apiVersion: gateway.flomesh.io/v1alpha1
kind: GatewayTLSPolicy
metadata:name: gateway-tls-policy-sample
spec:targetRef:group: gateway.networking.k8s.iokind: Gatewayname: simple-fsm-gatewaynamespace: httpbinports:- port: 8000config:mTLS: true
EOF

此时,假如我们仍使用原来的方式访问,访问会被拒绝。因为网关已经开始了双向 mTLS 认证,会验证客户端证书。

curl --cacert ca-cert.pem https://foo.example.com/headers --connect-to foo.example.com:443:$GATEWAY_IP:8000curl: (52) Empty reply from server

颁发客户端证书

使用前面的 CA 证书,为客户端颁发证书。

openssl genrsa -out client-key.pem 2048
openssl req -new -key client-key.pem -out client.csr -subj '/CN=example.com'
openssl x509 -req -in client.csr -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365

现在发起请求时,除了指定 CA 证书以外,还要指定客户端的证书和密钥,就能够通过网关的验证成功访问了。

curl --cacert ca-cert.pem --cert client-cert.pem --key client-key.pem https://foo.example.com/headers --connect-to foo.example.com:443:$GATEWAY_IP:8000
{"headers": {"Accept": "*/*","Host": "foo.example.com","User-Agent": "curl/8.1.2"}
}

关于 Flomesh

Flomesh(易衡科技)成立于 2018 年,自主研发并开源了高性能可编程代理 Pipy(https://github.com/flomesh-io/pipy)。以 Pipy 为基础,Flomesh 研发了软件负载均衡、服务网格两款软件产品。为工信部认证的可信云产品、可信开源项目。

Flomesh 核心竞争力来自完全自研的核心组件 Pipy,该组件高性能、高可靠、低延迟、可编程、可扩展、低依赖,采用 C++ 开发,内置自研的 JS 引擎,支持适用 JS 脚本做扩展开发。支持包括 x86、arm、龙芯、海光等硬件 CPU 架构;支持 Linux、FreeBSD、OpenWrt 等多种核心的操作系统。

Flomesh 成立以来,以技术为根基、以客户为导向,产品被应用在头部股份制商业银行总行、大型保险公司、运营商总部以及研究院等众多客户和多个场景。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/455790.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟着pink老师前端入门教程-day19

一、移动WEB开发之流式布局 1、 移动端基础 1.1 浏览器现状 PC端常见浏览器&#xff1a;360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见浏览器&#xff1a;UC浏览器&#xff0c;QQ浏览器&#xff0c;欧朋浏览器&#xff0…

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共享内存(mmap) 套接字&#xff08;socket&#xff09;过时的IPC通信方式 System V IPC 共享内存&#xff08;sh…

【ARM 嵌入式 编译系列 2.7 -- GCC 编译优化参数详细介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 GCC 编译优化概述常用优化等级-O1 打开的优化选项-O2 打开的优化选项-O3 打开的优化选项-Os 打开的优化选项优化技术使用优化选项的注意事项GCC 编译优化概述 GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fort…

Attention 和 Self-Attention 总结

一、Attention Attention 的核心逻辑是“从关注全部到关注重点”&#xff0c;将有限的注意力集中在重点信息上&#xff0c;从而节省资源&#xff0c;快速获得最有效的信息。 Attention 机制可以更加好的解决序列长距离依赖问题&#xff0c;并且具有并行计算能力。 Attention…

Maven构建OSGI+HttpServer应用

Maven构建OSGIHttpServer应用 官网&#xff08;https://eclipse.dev/equinox/server/http_in_equinox.php&#xff09;介绍有两种方式&#xff1a; 一种是基于”org.eclipse.equinox.http”包的轻量级实现&#xff0c;另一种是基于”org.eclipse.equinox.http.jetty”包&#…

Python HTTP隧道在Web服务中的性能优化:代码世界的“超级加速器”

在Web服务的世界里&#xff0c;性能优化就像是为网站或应用穿上一双“超级加速器”&#xff0c;让它在处理请求时能够飞得更快、更稳定。而基于Python的HTTP隧道&#xff0c;作为Web服务中不可或缺的一部分&#xff0c;它的性能优化同样至关重要。 首先&#xff0c;让我们来了…

Nicn的刷题日常之获得月份天数

目录 1.题目描述 描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 2.解题 1.题目描述 描述 KiKi想获得某年某月有多少天&#xff0c;请帮他编程实现。输入年份和月份&#xff0c;计算这一年这个月有多少天。 输入描述&#xff1a; 多组输入&#xff0c;一行有两…

PYthon进阶--网页采集器(基于百度搜索的Python3爬虫程序)

简介&#xff1a;基于百度搜索引擎的PYthon3爬虫程序的网页采集器&#xff0c;小白和爬虫学习者都可以学会。运行爬虫程序&#xff0c;输入关键词&#xff0c;即可将所搜出来的网页内容保存在本地。 知识点&#xff1a;requests模块的get方法 一、此处需要安装第三方库reques…

(转载)开源流程引擎三巨头:activiti、flowable、camunda,最推荐使用哪个?

开源流程引擎三巨头&#xff1a;activiti、flowable、camunda&#xff0c;最推荐使用哪个&#xff1f; 市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中&#xff1a;Jbpm4、Activiti、Flowable、camunda四个框架同宗同源&#xff0c;祖…

每期100000元,Agent赛题发布!

Datawhale赛事 贡献者&#xff1a;Amy、同济子豪兄&#xff0c;Datawhale成员 前几日&#xff0c;百度智能云发布了千帆杯AI原生应用开发挑战赛&#xff0c;每期冠军队伍领取高达100,000元奖金&#xff0c;可谓极具诱惑力。 2月1日&#xff0c;“千帆杯”第一期赛题正式发布&a…

Spring Boot整合新版Spring Security:Lambda表达式配置优雅安全

文章目录 1. 引言2. 项目依赖配置3. 使用Lambda表达式配置Spring Security4. 自定义身份验证逻辑5. 认证与授权注解5.1 Secured注解5.2 PreAuthorize和PostAuthorize注解 6. 总结 &#x1f389;Spring Boot整合新版Spring Security&#xff1a;Lambda表达式配置优雅安全 ☆* o(…

云原生 API 网关链路追踪能力重磅上线

云原生API网关介绍 云原生 API 网关是腾讯云基于开源网关推出的一款高性能高可用的云原生 API 网关产品&#xff0c;作为云上流量入口&#xff0c;集成请求分发、API 管理、流量监控、访问限制等功能&#xff0c;是微服务架构和容器架构中的重要组件。 TSE 云原生 API 网关提…