Spring Cloud 网关实战:5分钟搞定内网HTTPS自签证书配置(含OpenSSL全流程)
最近在帮一个初创团队做内部微服务架构升级,他们有个很实际的需求:所有内部管理后台和API接口,必须走HTTPS。原因很简单,虽然服务都在内网,但登录凭证、业务数据在网线上裸奔,总让人心里不踏实。用云厂商的证书当然省事,但内网IP地址或者自定义域名,商业证书要么不支持,要么价格不菲。这时候,自签证书就成了最经济、最灵活的解决方案。
很多开发者一听到“自签证书”就觉得麻烦,脑海里浮现出一堆OpenSSL命令和复杂的配置。其实,只要理清流程,在Spring Cloud Gateway(或Spring Boot应用)里配置自签HTTPS,真的可以快到以分钟计。这篇文章,我就结合最近的实际项目,把从生成证书到网关生效的完整闭环,以及那些容易踩坑的细节,给你一次性讲清楚。无论你是需要快速搭建一个安全的内部测试环境,还是为中小团队的生产内网服务加密,这套方法都能直接拿来用。
1. 核心概念:为什么内网也需要HTTPS?
在开始动手之前,我们得先达成一个共识:内网不等于绝对安全。现代办公网络,无线接入、访客网络、潜在的ARP欺骗或中间人攻击,都可能让在同一个交换机下的数据通信暴露在风险中。HTTPS(HTTP over TLS/SSL)提供的,不仅仅是数据加密,更重要的是身份验证和数据完整性保护。
- 加密传输:这是最基本的功能,防止数据在传输过程中被窃听。即使是内网,敏感的业务数据、管理员密码也不应该以明文传输。
- 身份验证:服务器向客户端证明“我就是你要访问的那个服务”。自签证书在这点上需要客户端手动信任,但对于可控的内网环境,这恰恰是一个优点——你只信任自己签发的证书。
- 数据防篡改:确保数据在传输途中没有被恶意修改。
对于Spring Cloud架构,通常我们不会在每个微服务上都单独配置HTTPS证书,那样管理成本太高。最佳实践是在API网关这一层统一处理TLS/SSL卸载。外部(或内部客户端)以HTTPS协议访问网关,网关解密后,以HTTP协议将请求转发给后端的各个微服务。这样,后端服务无需任何改动,所有安全压力都集中在网关上。
注意:自签证书在浏览器访问时会显示“不安全”警告,这是因为证书未被公共的证书颁发机构(CA)信任。我们需要在客户端(浏览器或调用方)手动安装并信任此证书。对于内部系统,这是一个可接受的流程。
2. 五分钟速成:使用OpenSSL生成自签证书
网上很多教程给的OpenSSL命令参数复杂,还涉及创建CA证书,对于单纯的内网服务器认证来说,步骤可以大大简化。我们采用一种更直接的方法:生成一个自签名的服务器证书,并直接包含我们需要的IP地址信息。
2.1 创建证书配置文件
首先,创建一个配置文件(比如叫 openssl.cnf),这能让我们精确控制证书的主题和扩展信息,特别是Subject Alternative Name (SAN),这是现代浏览器和Java客户端校验服务器身份的关键。
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = MyCompany Inc.
OU = DevOps
CN = internal-api.mycompany.local # 这里填写你的内网域名或通用名
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = internal-

&spm=1001.2101.3001.5002&articleId=152581992&d=1&t=3&u=62786f233cb342259e51146c5a268715)
481

被折叠的 条评论
为什么被折叠?



