免费网站推广平台排行榜,做ppt会去什么网站找图,微商怎么做_和淘宝网站一样吗?,wordpress 单页海报#x1f4e3;读完这篇文章里你能收获到
#x1f31f; 了解SSL/TLS证书对于网络通信安全的重要性和基础概念。#x1f527; 掌握在APISIX中配置SSL/TLS证书的基本步骤和方法。#x1f4dd; 学习如何通过修改监听端口#xff0c;使HTTPS请求更加便捷。#x1f6e0;️ 认识…
读完这篇文章里你能收获到 了解SSL/TLS证书对于网络通信安全的重要性和基础概念。 掌握在APISIX中配置SSL/TLS证书的基本步骤和方法。 学习如何通过修改监听端口使HTTPS请求更加便捷。️ 认识如何灵活管理SSL/TLS协议版本以适应不同的客户端需求。 『Apisix系列汇总』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 文章目录 一、SSL/TLS的重要性二、APISIX中的SSL/TLS配置2.1 准备SSL/TLS证书2.2 配置APISIX监听器2.2.1 单一域名2.2.2 泛域名2.2.3 Dashboard配置 2.3 创建路由2.4 验证配置 三、修改监听端口避免请求域名需要带端口3.1 修改端口监听配置3.2 重新加载Apisxi配置3.3 验证配置3.4 注意事项 四、SSL 协议4.1 ssl_protocols 配置4.1.1 静态配置4.1.2 动态配置 4.2 注意事项4.3 使用示例4.3.1 指定 TLSv协议 五、管理SSL/TLS证书 一、SSL/TLS的重要性
在深入了解APISIX的SSL/TLS配置之前我们首先要认识到SSL/TLS证书的重要性。SSLSecure Sockets Layer和TLSTransport Layer Security是确保网络通信安全的加密协议。它们能够为客户端与服务器之间的数据传输提供加密、身份验证和数据完整性保护。在当今这个对网络安全要求日益严格的时代SSL/TLS证书已经成为了网站安全的标准配置。 二、APISIX中的SSL/TLS配置
APISIX提供了灵活的SSL/TLS配置选项让我们可以轻松地为API服务启用HTTPS。以下是配置SSL/TLS证书的基本步骤
2.1 准备SSL/TLS证书
首先需要获取一个SSL/TLS证书。这可以通过向证书颁发机构CA申请或使用Let’s Encrypt等免费服务来完成。获取证书后您将得到一个证书文件通常为.crt或.pem格式和一个私钥文件通常为.key格式。
certSSL 密钥对的公钥pem 格式keySSL 密钥对的私钥pem 格式snisSSL 证书所指定的一个或多个域名注意在设置这个参数之前你需要确保这个证书对应的私钥是有效的。
2.2 配置APISIX监听器
2.2.1 单一域名
Admin API配置示例
curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{cert : $(cat t/certs/apisix.crt),key: $(cat t/certs/apisix.key),snis: [test.com]
}2.2.2 泛域名
一个 SSL 证书的域名也可能包含泛域名如 *.test.com它代表所有以 test.com 结尾的域名都可以使用该证书。比如 *.test.com可以匹配 www.test.com、mail.test.com。 以下是在 APISIX 中配置泛域名 SNI 的 SSL 证书的示例。
curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{cert : $(cat t/certs/apisix.crt),key: $(cat t/certs/apisix.key),snis: [*.test.com]
}2.2.3 Dashboard配置
在APISIX Dashboard中您可以按照以下步骤操作
进入“证书”部分。点击“创建”按钮。方式选“上传” 2.3 创建路由
curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -i -d
{uri: /get,hosts: [test.com],methods: [GET],upstream: {type: roundrobin,nodes: {httpbin.org: 1}}
}2.4 验证配置
配置完成后您可以通过发送一个HTTPS请求来验证SSL/TLS是否已成功启用。例如使用curl命令
curl --resolve www.test.com:9443:127.0.0.1 https://www.test.com:9443/get -k -vvv三、修改监听端口避免请求域名需要带端口
在配置APISIX的SSL/TLS支持时我们通常会涉及到监听端口的设置。默认情况下APISIX的HTTPS监听器会使用9443、9080端口而HTTP监听器可能使用80端口HTTPS使用443。
3.1 修改端口监听配置 sudo vi /usr/local/apisix/conf/config-default.yamlsudo sed -i /- 9080/a \ - 80 /usr/local/apisix/conf/config-default.yamlsudo sed -i /- port: 9443/a \enable_http2: true \- port: 443 /usr/local/apisix/conf/config-default.yaml3.2 重新加载Apisxi配置
sudo apisix reload3.3 验证配置
配置完成后您可以通过发送一个HTTPS请求来验证是否已成功启用。例如使用curl命令
curl --resolve www.test.com:127.0.0.1 https://www.test.com/get -k -vvv3.4 注意事项
在实际部署中我们可能需要根据环境或需求来修改这些端口。此外如果你打算在同一台服务器上同时部署APISIX和Nginx端口冲突是需要特别注意的问题。 四、SSL 协议
APISIX 支持 TLS 协议还支持动态的为每一个 SNI 指定不同的 TLS 协议版本。 为了安全考虑APISIX 默认使用的加密套件不支持 TLSv1.1 以及更低的版本。 如果你需要启用 TLSv1.1 协议请在 config.yaml 的配置项 apisix.ssl.ssl_ciphers 增加 TLSv1.1 协议所支持的加密套件。
4.1 ssl_protocols 配置
4.1.1 静态配置
静态配置中 config.yaml 的 ssl_protocols 参数会作用于 APISIX 全局但是不能动态修改仅当匹配的 SSL 资源未设置 ssl_protocols静态配置才会生效。
apisix:ssl:ssl_protocols: TLSv1.2 TLSv1.3 # default TLSv1.2 TLSv1.34.1.2 动态配置
使用 ssl 资源中 ssl_protocols 字段动态的为每一个 SNI 指定不同的 TLS 协议版本。 指定 test.com 域名使用 TLSv1.2 TLSv1.3 协议版本
{cert: $cert,key: $key,snis: [test.com],ssl_protocols: [TLSv1.2,TLSv1.3]
}4.2 注意事项
动态配置优先级比静态配置更高当 ssl 资源配置项 ssl_protocols 不为空时 静态配置将会被覆盖。静态配置作用于全局需要重启 apisix 才能生效。动态配置可细粒度的控制每个 SNI 的 TLS 协议版本并且能够动态修改相比于静态配置更加灵活。
4.3 使用示例
4.3.1 指定 TLSv协议
存在一些老旧的客户端仍然采用较低级别的 TLSv1.1 协议版本而新的产品则使用较高安全级别的 TLS 协议版本。如果让新产品支持 TLSv1.1 可能会带来一些安全隐患。为了保证 API 的安全性我们需要在协议版本之间进行灵活转换。 例如test.com 是老旧客户端所使用的域名需要将其配置为 TLSv1.1 而 test2.com 属于新产品同时支持了 TLSv1.2TLSv1.3 协议。
为 test.com 域名指定 TLSv1.1 协议版本。
curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{cert : $(cat server.crt),key: $(cat server.key),snis: [test.com],ssl_protocols: [TLSv1.1]
}为test2.com域名指定TLSv1.2 、TLSv1.3协议版本。
curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{cert : $(cat server2.crt),key: $(cat server2.key),snis: [test2.com],ssl_protocols: [TLSv1.2TLSv1.3]
}访问验证使用 TLSv1.3 访问 test.com 失败
$ curl --tls-max 1.3 --tlsv1.3 https://test.com:9443 -v -k -I五、管理SSL/TLS证书
在APISIX中管理SSL/TLS证书同样简单。无论是证书的更新、续期还是吊销都可以通过Admin API或Dashboard来完成。
更新证书当证书到期或需要更换时您可以通过Admin API或Dashboard上传新的证书文件和私钥。续期证书对于使用自动续期服务的证书如Let’s Encrypt您无需手动续期。对于其他证书您需要在到期前联系CA进行续期。吊销证书如果证书私钥泄露您应立即吊销证书并在APISIX中更新为新的证书。