Passing a private key as an environment variable
This post's featured URL for sharing metadata is https://www.jvt.me/img/profile.jpg.
When working with private keys, one of the awkward things to deal with is how to pass them around to applications. If you're following a twelve-factor app approach where secrets are passed in via the environment variables, but as keys are multi-line there are a few options for how to wrap them into an environment varialbe.
One option is to replace the newlines with an escaped newline (via):
sed ':a;N;$!ba;s/\n/\\n/g' pem.pem
Then, it can for instance consume it using the following Typescript code:
const privateKey = (process.env.PRIVATE_KEY ?? '').replaceAll(/\\n/g, '\n')
Alternatively, we could base64-encode the key, which means we don't need to worry about (un)escaping newlines.