无法添加用于 Graph API 的公钥

nox*_*nox 5 azure

我目前在 Azure 注册应用程序中设置了一个应用程序,但无法在“证书和机密”下添加我的公钥。我尝试生成这样的密钥,但生成的公共(或私有)密钥 ( .pem) 无法添加到应用程序中。我使用这个密钥来处理 JWT 的一些工作,所以我想我可能需要一个稍微不同的格式,所以我也尝试制作一对这样的密钥。还是没有运气。

我能够将某种形式的凭据添加到应用程序中的唯一方法实际上是使用.crt之前生成的密钥对创建和自签名,这是 Azure 没有抱怨我添加凭据的唯一情况。

尝试添加其他任何内容,甚至是 public .pem,它说它受支持的文件类型,都会出现以下错误:

Failed to add certificate. Error detail: Upload a certificate (public key) with one of the following file types: .cer, .pem, .crt [8jpdkHO8jJ6PaePjw7NvbJ]

仅仅上传.crt是不够的,我使用的私钥上的指纹jwt.decode()与 Azure 上注册的指纹不匹配,从而导致错误。

nox*_*nox 3

我不经常使用 stackoverflow,所以不确定礼仪以及删除答案后重新发布是否可以。不管怎样,我已经修复了它并添加了实际的步骤,而不仅仅是链接到它们。

\n

按照此处的证书生成说明,我可以上传公钥。

\n

步骤如下:

\n

生成证书

\n
openssl req -x509 -days 3650 -newkey rsa:2048 -keyout key.pem -out cert.pem\n
Run Code Online (Sandbox Code Playgroud)\n

获取指纹

\n
echo $(openssl x509 -in cert.pem -fingerprint -noout) | sed \xe2\x80\x98s/SHA1 Fingerprint=//g\xe2\x80\x99 | sed \xe2\x80\x98s/://g\xe2\x80\x99 | xxd -r -ps | base64\n
Run Code Online (Sandbox Code Playgroud)\n

然后,您应该拥有一个允许您上传的 azure 证书,以及在任何请求中使用的指纹。

\n