Skip to main content

Setting up HTTPS (TLS)

If you want to run ORY Kratos using self-signed TLS certificates, you can do the following:

$ openssl genrsa -out key.pem 4096
$ openssl req -new -x509 -sha256 -key key.pem -out cert.crt -days 365

$ SERVE_PUBLIC_TLS_CERT_BASE64=$(base64 -i cert.crt)
$ SERVE_PUBLIC_TLS_KEY_BASE64=$(base64 -i key.pem)
$ SERVE_ADMIN_TLS_CERT_BASE64=$(base64 -i cert.crt)
$ SERVE_ADMIN_TLS_KEY_BASE64=$(base64 -i key.pem)

# or

$ SERVE_PUBLIC_TLS_KEY_PATH=/path/to/key.pem
$ SERVE_PUBLIC_TLS_CERT_PATH=/path/to/cert.crt
$ SERVE_ADMIN_TLS_KEY_PATH=/path/to/key.pem
$ SERVE_ADMIN_TLS_CERT_PATH=/path/to/cert.crt

If you run Docker locally, you can then use

$ docker run ... \
-e SERVE_PUBLIC_TLS_CERT_BASE64="$SERVE_PUBLIC_TLS_CERT_BASE64" \
-e SERVE_PUBLIC_TLS_KEY_BASE64="$SERVE_PUBLIC_TLS_KEY_BASE64" \
-e SERVE_ADMIN_TLS_CERT_BASE64="$SERVE_ADMIN_TLS_CERT_BASE64" \
-e SERVE_ADMIN_TLS_KEY_BASE64="$SERVE_ADMIN_TLS_KEY_BASE64" \
...

or mount the files using --mount and linking to the files.