我正在尝试从VB.NET服务器应用程序访问Google AnalyticsAPI。我的应用程序属于“服务帐户”应用程序的类别,因此我不会向用户请求凭据 - 该应用程序具有自己的凭据,用于从Google检索数据以向用户显示。
service-account OAuth2 workflow要求应用程序生成JWT(JSON Web令牌)作为验证自身的方法。我发现a .NET library生成了这些令牌,但是我对这个库的“关键”感到困惑。在库的文档中,给出的示例键是一个基于64的数字字符串以及大写和小写字母。但我所拥有的是.p12
私钥文件和相应的密码。如何从此密钥文件中提取某种文本密钥?
我尝试做类似
的事情Dim cert As New X509Certificate2("C:\Users\xxxxx\private.p12", "notasecret")
Dim certData As Byte() = cert.Export(X509ContentType.Pkcs12, "notasecret")
但这给我留下了一个字节数组,而不是一个字符串。我在这里走在正确的轨道上吗?
答案 0 :(得分:2)
我相信我已经弄明白该怎么做了:
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(“密钥无法在指定状态下使用。”)。