浏览 1.5k
(首次发布于2021.8.18)
近来,好像人人都在讨论“安全性”。保护应用安全历来挑战重重,上云之后更是难上加难。而一种看起来比较靠谱的解决方案是“零信任”。Gartner 将“零信任”定义为:
但“零信任”究竟是如何在云环境中工作的,有哪些技术可以帮助您实现“零信任”?本文将在一个常见用例的背景下介绍零信任:
您已在边缘负载均衡器和 Ingress Controller 上启用了加密,但对 Ingress Controller 和应用本身之间的流量进行加密的最佳方法是什么?答案就包括了需要启用应用服务器来处理 TLS。
在撰写本文时,Spring Boot 已在 GitHub 上获得了近 6万个赞,它是 Java 框架领域一颗耀眼的巨星:好上手、轻量级且功能强大。Spring Boot 项目可以通过内置的应用服务器(例如 Apache Tomcat)编译成自包含的 .jar 文件。要启动 Java 服务,只需执行 .jar 文件并开始向暴露的端口(默认为 8080)发送流量即可,非常简单!
# keytool -genkey -alias tomcat -keyalg RSA -keystore certstore
server.port = 8443
server.ssl.key-store = classpath:keystore.jks
server.ssl.key-store-password = secret
事实证明,将 4 层 TLS 加密委托给应用框架(例如 Spring Boot)是可行的,但却不方便操作。如果您还使用其他语言和框架(例如 Ruby 和 Rails,或 Python 和 Flask)编写应用,则情况会更加复杂,因为每个框架都拥有自己的配置监听器以及处理密钥和证书的方式。但幸运的是,有一些工具可以让事情变得简单得多!
Unit 还允许您单独配置 HTTP 和 HTTPS 接口,而不必再受使用它们的应用的限制。我们来通过 Spring Boot API 示例探索这个强大的功能。
plugins {
id 'org.springframework.boot' version '2.4.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
# ./gradlew build
{
"listeners": {
"*:8080": {
"pass": "applications/java"
}
},
"applications": {
"java": {
"user": "unit",
"group": "unit",
"type": "java",
"environment": {
"Deployment": "0.0.1"
},
"classpath": [],
"webapp": "/path/to/build/libs/demo-0.0.1-SNAPSHOT.war"
}
}
}
# curl -X PUT --data-binary @config.json --unix-socket \
/path/to/control.unit.sock http://localhost/config/applications/java-app
# cat cert.pem ca.pem key.pem > bundle.pem
# curl -X PUT --data-binary @bundle.pem --unix-socket \
/path/to/control.unit.sock http://localhost/certificates/bundle
"127.0.0.1:443": {
"pass": "applications/java-app",
"tls": {
"certificate": "bundle"
}
}
# curl -X PUT --data-binary @listener.json --unix-socket \
/path/to/control.unit.sock http://localhost/config/listeners
如要开始使用 NGINX Unit,请参阅安装说明。
请前往NGINX开源社区:
按点赞数排序
按时间排序