1

我正在尝试从 VB.NET 服务器应用程序访问 Google Analytics API。我的应用程序属于“服务帐户”应用程序的类别,因此我没有向用户请求凭据——该应用程序有自己的凭据,它用于从 Google 检索数据以显示给用户。

服务帐户 OAuth2 工作流程要求应用程序生成 JWT(JSON Web 令牌)作为对自身进行身份验证的一种方式。我找到了一个 .NET 库来生成这些令牌,但我对给这个库提供哪个“键”有点困惑。在库的文档中,给出的示例键是一个 base-64 外观的数字和大写和小写字母字符串。但我拥有的是一个.p12私钥文件和相应的密码。如何从该密钥文件中提取某种文本密钥?

我试图做类似的事情

Dim cert As New X509Certificate2("C:\Users\xxxxx\private.p12", "notasecret")
Dim certData As Byte() = cert.Export(X509ContentType.Pkcs12, "notasecret")

但这给我留下了一个字节数组,而不是一个字符串。我在正确的轨道上吗?

4

1 回答 1

3

我相信我已经知道该怎么做:

Dim PrivateKeyPath As String = "C:\Users\xxxxx\privatekey.p12"
Dim CertificatePassword As String = "notasecret"

Dim cert As New X509Certificate2(PrivateKeyPath, CertificatePassword,
                                 X509KeyStorageFlags.Exportable)
Dim certData As Byte() = cert.Export(X509ContentType.Pkcs12, CertificatePassword)
Dim keyString As String = Convert.ToBase64String(certData)

正如@Jim Mischel 指出的那样,我只需要以base-64 对关键数据进行编码。

顺便说一句,X509KeyStorageFlags.Exportable在尝试导出密钥时,添加标志修复了 CryptographicException(“密钥在指定状态下无效。”)。

于 2013-03-06T15:52:44.090 回答