无法使用私钥在 jwt.io 中生成 JWT 令牌

问题描述

我正在尝试测试我正在构建的有关 JWT 的软件的功能以了解它,该功能使用 Firebase JWT PHP 包

我正在尝试创建一个使用密钥对作为编码/解码的测试用例,但无法让 http://jwt.io 页面使用我的密钥创建令牌。

这些是我使用 ssh-keygen 命令创建的键,没有任何修改。

我去页面,选择HS256 / 384 / 512,去掉页面默认的key。然后我粘贴我的私钥以便签署我的数据。但是该页面不会生成任何 JWT。

我做错了什么?

我确实注意到页面中的示例键显示 RSA KEY 并且它们比我的短,这就是我尝试其他 HS* 选项的原因

另外,如果我选择在我的密钥上设置密码,它对 JWT 有效吗?

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

公开

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYIDKzHwsTMa7cS9YpN/tjHw3friJ8l9b1ontuu2uDaQCFoGYfYzAM76ij++X7x81I43sANl6j+SN/1eC8PIrFbIJRcjG4U5YrL3i08LAgElvthH+0+Hddww16W2sv+SeGGNOcHNNFoCmO/aDaRvwkR2fp6B9LCEG7/MyNC2RaospM7upn5vfbNpdC8vGIBiV8v3AooyqV9G/hS7pMPNdkOCF9JndMjn4QhNy1otbjAj6y5XfGb3Ofz4tKep2RGFcHBbOFTkIKRYqUwCrpEQqyfRXeTJqPnzaCOVvjN1/+4lzedafvm49KXUOEwtPWSBufqihCVajtKVO92bZNtJwCAtfI9PZHBx5OTe/BRzmhkTziNXtgKqvCi+edwWTiyIEyz+fakdBpzrzVi2KgSyanc/LVPU8GNMuSqL1DWrmZIvdGYNjz1IrEDpoJtv64R/BL+pNJjB/qk9HS1d3kk8GgT12F/OxgZd6AsMB/1dL4a85wJ9GTkNa3jMiYy4wKFzM= jorgee@jorgee

解决方法

事实证明,密钥必须是 PEM 格式,而不是我所拥有的默认格式。

ssh-keygen -t rsa -b 2048 -m PEM -f mykey.key
# Don't add passphrase
openssl rsa -in mykey.key -pubout -outform PEM -out mykey.pub

示例私钥

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAqBfiDg2wY5S4ZCx58s2t1f6YjV6bPETX7Ru81loI0rgdDLqS
kEd2JmnxSEQ/7lvPvlMbHGPK0WkhQlBjyiIf8fTAo/Jts+Zh2V1ACBcV72pGyLBc
JGopDO9RYDGK/VNvni4osVb+QXDV9yo/o2fE86KE/yK5K5bz00YW27/C5SjXeJFb
CAdZzjuO02SXYWEJt3poNcew5kavHnUmx8fYr1MdIlvEe+auNArsF0uMz/1StWIx
0u349IQJBoWmtCXrVYStGZNrBvaSFa/MzR+h2XnUbDRnRUfN5drDoIq/qYMXbRoP
wFzLquARuJsHJVhO8+2fNQLt4lgBXFKYC/HX3wIDAQABAoIBADdxKS5ZdYRi2S6x
PMfI7z1V7Bs0yR7n1hBuxaotqBtYfrxkDVNpPp8M8nhTioKj5bFw19BVWeAYPNAS
k9dnygGUKLXqkCR2KG/5QdVpR+LfutkW0k1wdnm9tal0rdNAYeBaeTGE7/fFr80G
MldDMsLpJ9S/LzQhZeqZg5CXf0D13ran7r9ZsaxLBctY0WRYjvMKBCKIQhWWsxXH
Wl4gsTQqra/Ai4cswL2JgJ0YVizVOd9m0uBHBdTvIE+P6+HFgg7cE+wE1HUUrUuO
Gp9eneZCNWSKPykRIKAxPwW324M+/2lg3n7CMKqpAX0dcIvUSuxu5H9zqFtBp3zN
ODT8AwECgYEA1VC+MFoLMXsrfxjlTQaM1hdegbImiB/IdxJHXTJK6iVTHioYw9eC
Sn4Als42lggiQIX6L9akXqO6w/SdJRZHK3bIWc9fEfdyXIHx84Lim/9fDZQsdaFB
18nLin2CC+IXCCdWcY9fmSziS3gK2KjzaLE246ssWxS/kK2dfbrosxcCgYEAybqZ
r/5q/yJnM6fxl1IvHhNm2m2Agy/vPcYiOhNeDY7JNi1W9GxlDcAmx0emQ3ZuCQju
hKYkY/rji/RYW+NlblaD0xlm75ZTGno3DHtlapo+1MlBULmfJLVViHNLxFKSfpfP
ReTOZnMTa/uaEA7P4YPIJ5EhtU2SWBEvpJ4bnnkCgYEAlGw56Sq93w/0k9qesZl9
JPndqCBs7wouUatGPHJh7clKrBJeaOXqoipJ/qQ9FudR7dNK4T5X4AHMUcxCCywV
GQjtHpBLdhTWXceMsgK/6gsl+CzBQpeRWLPwC8yIT/xgSiwU2a8ItWuliR1dbqMf
uhiUOJVBp54oLGKg0nrarsECgYA2toyehkOg5UTWZtOItjqfTqXT0mVLr4GU4JtB
4yTcSoDaV9vAuXGDFD2wSQeYPpPDkY+XnLQ8Bb0XpXMdoQROs9pXNAmOK9hoUwOB
OCqeii1Gazty2JWIUEJdmt/O5JJlEWmfTFqKwOVgoUH83veU87giuyNIWDy79BVW
8acOCQKBgEtJIu9x/4ubpumPO94R6tyTTZVjCxJpnW3Nlc1/Ly/i/TbhYJ2BNlkz
JA2HxQSun456xqAJa38yo0Ciyq65hkO0BmHygwvgY0f6IKnq0dCzmD80/mrWK6cx
HqS++Bajrma/RQc+KGuyLqm/Ub5khTiWgszYjJ+GeD2d96YBXQ7I
-----END RSA PRIVATE KEY-----

示例公钥

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqBfiDg2wY5S4ZCx58s2t
1f6YjV6bPETX7Ru81loI0rgdDLqSkEd2JmnxSEQ/7lvPvlMbHGPK0WkhQlBjyiIf
8fTAo/Jts+Zh2V1ACBcV72pGyLBcJGopDO9RYDGK/VNvni4osVb+QXDV9yo/o2fE
86KE/yK5K5bz00YW27/C5SjXeJFbCAdZzjuO02SXYWEJt3poNcew5kavHnUmx8fY
r1MdIlvEe+auNArsF0uMz/1StWIx0u349IQJBoWmtCXrVYStGZNrBvaSFa/MzR+h
2XnUbDRnRUfN5drDoIq/qYMXbRoPwFzLquARuJsHJVhO8+2fNQLt4lgBXFKYC/HX
3wIDAQAB
-----END PUBLIC KEY-----

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...