I have the following piece of code to signIn a user:
export function signJwt(object: Object, options?: jwt.SignOptions | undefined) {
return jwt.sign(object, privateKey, {
...(options && options),
algorithm: "RS256",
});
}
But I am getting a Error: secretOrPrivateKey must be an asymmetric key when using RS256
. I have generated the public and private keys using the following commands:
Private Key
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
Public Key
openssl rsa -pubout -in private_key.pem -out public_key.pem
What is going on? Why am I getting this error? and I am storing the private and public keys in a config/defaults
folder:
export default {
port: 1337,
dbUri: "mongodb://localhost:27017/[DatabaseName]",
saltWorkFactor: 10,
accessTokenTtl: "15m",
refreshTokenTtl: "1y",
publicKey: `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqycDj+M3aJXhEuvHiWG0
/Xqx6Gt3t3ELtJrSzHqwtAyy1VVB1UP52Dw0nRnWjVPhzRdDXRdpLA8ZnfrsDXx7
bNoiWIs7dQpv7mcPY1yFPHeITpaZcb40yIaHXTbnOcviVJSVa7rXLlnDGrL4SdXz
RdxIl3iilN/w4lSDaMg+JCpT0O0w3Qzh9XA7Flx9WyqsZagPNmJKs5e3FfUVv074
aul1kyd2ttIGFDLZRM3w5ay9QaS/hAW8fB/EnuCDd1DaQyIEmeszIx7GXUlaw0GK
oWFfNJDQmLivfC3QNK142X2iJV0EyyqZ/56+9Kq/PnDpFXrXrPHZp8tWScecIyGq
VQIDAQAB
-----END PUBLIC KEY-----`,
privateKey: `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrJwOP4zdoleES
68eJYbT9erHoa3e3cQu0mtLMerC0DLLVVUHVQ/nYPDSdGdaNU+HNF0NdF2ksDxmd
+uwNfHts2iJYizt1Cm/uZw9jXIU8d4hOlplxvjTIhoddNuc5y+JUlJVrutcuWcMa
svhJ1fNF3EiXeKKU3/DiVINoyD4kKlPQ7TDdDOH1cDsWXH1bKqxlqA82Ykqzl7cV
9RW/Tvhq6XWTJ3a20gYUMtlEzfDlrL1BpL+EBbx8H8Se4IN3UNpDIgSZ6zMjHsZd
SVrDQYqhYV80kNCYuK98LdA0rXjZfaIlXQTLKpn/nr70qr8+cOkVetes8dmny1ZJ
x5wjIapVAgMBAAECggEAHOo6b9SzR7gKjmfHDi6zpR9Vby64ywUONTTy6BjSQZjj
nacJuD4Dt8R0HxZ+aOIDA+MqPk/2NLtYWJhLyPt+3qT7qHndUaixwFUpBGBdIhoP
rTdENTMtN7OCqvzbk6geVKvFkq2+LNZ9X8VcrRy4PNU6blyzGvO6foJIsSsjVHiL
djcplxPS0D4bulSmFBLQ8FIGIrygbhYJBJ3O/OTtUKzIlmyrhdbLQ+hWYf80i8RO
IAchdv0x+v5dQ3E8VnHGDg0hlsv2Zodkk09RYPMOypCF0dvkbshI79Vrdr7K2WsK
JihgnbC/FqjAxL58o28ggAfsCMCMHqjeSI11o+3HAQKBgQDQt2KR6meVllyLnutA
4W7CWsi7AACDzUe9lbIc9iphe7JxflsNx1qg2FgmiOPakJ2JmaKy69bcfY7Zqr4h
mIm9Y9qLMvhR23sT4vZXj3NvU9Gq7S0JufUoOTJscvP4BHy46udLOCRqaQNtdz9D
Mwf3psw8Jp679m3AuPL9AuASJwKBgQDR7RZ2qjJjNrtcxjs3GDvMX+P9KnrcG831
7N3k7mqkfiYnhYJgXmU+JHbyIAoe9Qop8AZ0OMTdNyjF6uuizW8lwT1+fZJjz9RF
1lmQJOejfyZDBYAd7gHewA95rAfk5YPJwW4rYE+CSLzPsrVw5uIxc6qhDumR3341
t8XdnTe5IwKBgQCyjqDqWlIB3GASJoP2vqWl6kreCFNobr9YRu/Y7RQ2z79KbyHw
uMMk5dEMLoJYIu5ToLdbQH5Rpa0HNJZyYXA9MWbvPUzJou45hirfn97OuDOgekXU
k11T6xLjSrjDTvtwq63yYPZufqarCKB7mfXP/ceuEhAsl9cvUEq4/7O4cwKBgBkk
RQF3RsudHXlyAFuL2nWSsnJ6qPY9mkAu2zB04W7L8PPgyImUJJn5sgkzjyLABDSb
m5pFxkYcOhTiGtCHvB0QdLX2ghbUKD8o+dcKpHdvXfy+5uYuwCiWZgQTd2qRlmQO
d4xYX41h+sMBSzu3WzXC/ZeGerDOzIXQebEeCDNzAoGAaSmbFIzE1lM+y+gL58lL
Qs8h8JxUTdhU0o7TH0Yn3P/PGTkhn8IS+HSBQ6QI/I3Y5WHS7LhCBQ6HYtt+dUbc
goNFJeK0XmODIQ3Ci80LYYvlr33zKwdCKuv+ZQk3ADeQql/VyjtGzEFSuTK7IK3/
WXq6XLf2L6oEAJKWYrm6sus=
-----END PRIVATE KEY-----`,
};
Is it the way I am storing the private and public keys?
It is because when you assigned the values for private key and public key the formatting changes. The keys must look exactly how the cert look like even the spacing.
const publicKey='
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDLqJlPUBTj1Iiz
zzAcIB/3dQhYDVWQcCjRG3cQVHuswuIUg2hPIpsppTK0oPUcudfksB4uVob9mSU7
8fbZ2mvKOtIpiXA7blJVRVrLadPCVeTYXc9QAR+5Wf9mTxYPwpSOFs9O/Hy0CoN2
WPqIJOQFrgNZEHtL1NetxlRqZabn6I467R49xUZxy4Z9GZIJ2hswd1hUPfr5fiAS
eUUgJlSbXvDx3VHcIh2jkRvib1lgODDnD/hkNosTpWsTCV+mfzRt5Sred0mzHpG9
DgMYnCeknPDLHAhkYmJ0/RZmV5G7OoXTGyKtmhYIByRAGrqaqy7K4ROe+JW6Kzt2
OWhx6/UzAgMBAAECggEADvsdIpaZ9XO7WzqzknC8g+fx0ARUayEM/Ot1HoLlwWdp
LlLHmAFMLPaQHHW17MHbmItp/5pG03McqDmxdloDptHH3DKrdPu1sRG+eYsUfs2c
XVwdNV3idwXLQeaHEWwMoHJwwncpNyyKJL5Wg4WZ2QnGs5pWRNWTHfR3s4c8YqpO
Ji4sXDVO8geDeUARSiWRr5yRDH1rU2cazw0/eF4Z0zWeBrreu3VSKBOCjmdqqYoV
aHXqGYoJS9Kj3FUG2i0hFTHICNSuys1dSVW5OoAn1fLia3w4PhtVwhTNrYKrkTbE
qCJ/TEjMdFVg7OEyXmBrezqeBkdmaq1Ng+ymikwS4QKBgQD23hyFuXJPSQBxij3p
tXHvV156oO0aAJ7CzpyRVt2m+5JIX8SGmvdGhcGy2g4rXAAA78fHc/vx9WNmUez0
+G4IIi8TDNQdmsv5ogWVkuluyK0tJhfyK4f6/vPliQL8AJcIPOo4X++YYLIwmqKa
vXKRIPF7dU1jv2Z0toz5aTS60wKBgQDTMUnsvorbXl4Ne4ijUVxq+kyvliM6noWO
YH2KcssUajQ7X27yTZl0z5JurNBkLMSlrwuEmHXaGNX/ZHYbQ0Bt/ktn9nzzCWtB
d3CxIMO9zQ5bw78Kft15PL5WZoVWiLH+mKt9Mo1FhpgNGHB0o5JQavWkvGeezQkS
+YLvi7SgIQKBgQCvwsuD2dis4kjSjZ4u+uQ3h3jYziKBVNez0u5d+/6rmIk5xhVh
0IslRq317JISBNpr0EvokYdbaV5vxvxyHT4ZxFzHr2aF/WQkQ1q+d26DVZUWg/yg
iqWx6jszvSzGxpTBZL1NjeBEGPRE7pO+oAslkNLdF1MWJXuItUABgwnryQKBgQDD
mH2n5t1ByIeBIy1sXNkkNwc5A+tCyjhVoeYDiMeu86HGb1+Yx+fdOLWdDS6/6HqE
HLelKXLU+HWR4GBGZaXReVgrRC17BfkxG8biNb80FSs8L/HKba7/LxP1f2P0vgtk
Cc+h12ThxIMkdcMJM8k586Xn2Zp6h9jkmvP6mcBDIQKBgQC1WzFBrmCikop8xYtp
Q5IUN+MB8w09Wvp2XY/WfBlwzMUa+mMZNz2XLMCEa3uBGPY6u8eg1iDATPR61bym
j/aCHA+cRks5zZXXmOc8H7qO/rFLWhnYCfzMDqG97dhnhf78vJSEI5n86dMas5ct
JzorGJm7NnRktgA/ebI6u/cbtw==
-----END PRIVATE KEY-----
'
const privateKey='
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy6iZT1AU49SIs88wHCAf
93UIWA1VkHAo0Rt3EFR7rMLiFINoTyKbKaUytKD1HLnX5LAeLlaG/ZklO/H22dpr
yjrSKYlwO25SVUVay2nTwlXk2F3PUAEfuVn/Zk8WD8KUjhbPTvx8tAqDdlj6iCTk
Ba4DWRB7S9TXrcZUamWm5+iOOu0ePcVGccuGfRmSCdobMHdYVD36+X4gEnlFICZU
m17w8d1R3CIdo5Eb4m9ZYDgw5w/4ZDaLE6VrEwlfpn80beUq3ndJsx6RvQ4DGJwn
pJzwyxwIZGJidP0WZleRuzqF0xsirZoWCAckQBq6mqsuyuETnviVuis7djlocev1
MwIDAQAB
-----END PUBLIC KEY-----
'
export default {
port: 1337,
dbUri: "mongodb://localhost:27017/[DatabaseName]",
saltWorkFactor: 10,
accessTokenTtl: "15m",
refreshTokenTtl: "1y",
publicKey: publicKey,
privateKey: privateKey,
};