You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取JWT密钥及Windows服务器多环境密钥存储方法

JWT配置相关问题实操方案

1. JWT密钥的获取方式

JWT对称签名算法(新手最常用的HS256/HS512)所用的密钥不需要向任何第三方申请,自行生成符合长度要求的高熵随机字符串即可:

  • 长度要求:HS256算法密钥至少16位(128位熵),推荐使用32位及以上长度,禁止使用有语义的短句、生日、常用密码这类低熵内容作为密钥。
  • 本地快速生成可以直接在PowerShell中执行以下命令,直接输出符合要求的随机密钥:
# 生成32位随机字符串作为JWT密钥
-join ((1..32) | ForEach-Object {[char]((48..57)+(65..90)+(97..122) | Get-Random)})

如果使用RS256等非对称签名算法,需要自行生成RSA公私钥对,入门实现JWT认证优先用HS256即可,逻辑更简单。

2. 多环境密钥使用规则

三个环境必须使用完全独立的密钥,禁止跨环境复用:

  • 开发环境(Dev):单独生成一个密钥,直接存在本地项目的appsettings.Development.json配置文件中即可,该环境密钥无安全敏感性,哪怕泄露也不会造成实际影响。
  • 测试环境(Test):单独生成专属密钥,存在测试环境部署包的appsettings.Test.json中,仅开放给测试运维、相关测试开发人员访问权限,避免无关人员伪造测试身份。
  • 生产环境(Prod):密钥必须单独生成,长度不低于32位,建议每3-6个月轮换一次,绝对不能明文写在任何随代码发布的appsettings.json文件中,绝对不能提交到代码版本库。

3. Windows服务器上JWT密钥的存储方案

生产环境禁止将密钥明文存储在站点根目录的配置文件中,Windows环境下按安全优先级推荐以下存储方式:

  • 最高优先级:存储在Windows凭证管理器中。在服务器上打开「凭证管理器」-「Windows凭证」-「添加通用凭证」,将JWT密钥作为凭证值存入,代码通过Windows内置凭证API读取,普通站点进程、非管理员账号无法读取明文。
  • 次优先级:存储在IIS站点专属环境变量中。如果是IIS部署的站点,直接在对应站点的配置编辑器中,找到system.webServer/aspNetCore节点添加站点级环境变量存储密钥,配置内容会被IIS加密存储在服务器级配置文件中,仅服务器管理员可查看修改。
  • 容器部署场景:将密钥配置为Windows容器的加密secret挂载,不要打包在镜像内置的配置文件里。
  • 特殊情况必须存在配置文件的:使用Windows DPAPI对配置文件中的密钥字段做加密,站点运行时通过DPAPI解密读取,禁止明文存储。

注意:不管哪个环境,都不要把密钥硬编码在业务代码里,统一走配置读取逻辑,避免后续轮换密钥需要重新编译代码。

内容的提问来源于stack exchange,提问作者Nilesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:48:53