如何使用 PEM 密钥在 C# 中签名/加密 JWT?

Che*_*oXL 5 c# ssl jwt

我需要创建需要使用 Google 提供的密钥进行签名的自定义令牌。密钥以文本形式提供,例如-----BEGIN PRIVATE KEY-----\nMIIE....

我通过使用 BouncyCastle 读取 PEM 密钥并获取 RSA 密钥来完成此工作,但现在我需要这个项目在 Linux 下运行,所以我不能使用 BouncyCastle,因为它只能在 Windows 下工作(它使用 RSACryptoServiceProvider)。

那么,有没有一种方法可以实现相同的结果,但仅使用 .NET Standard 代码呢?

我已经尝试将 PEM 文件转换为 PFX 文件,但我没有任何证书。尝试从此处此处获取证书不起作用(OpenSSL 表示证书不属于所提供的密钥)。

rkj*_*rkj 5

您可以将 PEM 文件转换为 p12 文件并使用该 p12 签署您的 JWT

var payload = new Dictionary<string, object>()
{
    { "sub", "mr.x@contoso.com" },
    { "exp", 1300819380 }
};

var privateKey=new X509Certificate2("my-key.p12", "password").GetRSAPrivateKey();

string token=Jose.JWT.Encode(payload, privateKey, JwsAlgorithm.RS256);
Run Code Online (Sandbox Code Playgroud)

这是详细信息链接https://github.com/dvsekhvalnov/jose-jwt#rs--and-ps--family