Create Your Signing Certificate
Digitally signing documents requires a signing certificate in .p12
format. You can either purchase one or create a free self-signed certificate.
Follow the steps below to create a free, self-signed certificate for local development.
These steps should be run on a UNIX based system, otherwise you may run into an error.
Generate Private Key
Generate a private key using OpenSSL by running the following command:
openssl genrsa -out private.key 2048
This command generates a 2048-bit RSA key.
Generate Self-Signed Certificate
Using the private key, generate a self-signed certificate by running the following command:
openssl req -new -x509 -key private.key -out certificate.crt -days 365
You will be prompted to enter some information, such as the certificate's Common Name (CN). Ensure that you provide the correct details. The —days
parameter specifies the certificate's validity period.
Create p12
Certificate
Combine the private key and the self-signed certificate to create a .p12
certificate. Use the following command:
openssl pkcs12 -export -out certificate.p12 -inkey private.key -in certificate.crt -legacy
When running the application in Docker, you may encounter permission issues when attempting to sign documents using your certificate (.p12) file. This happens because the application runs as a non-root user inside the container and needs read access to the certificate.
To resolve this, you'll need to update the certificate file permissions to allow the container user 1001, which runs NextJS, to read it:
sudo chown 1001 certificate.p12
p12
Certificate Password
When you create the .p12
certificate, you will be prompted to enter a password. Enter a strong password and keep it secure. Remember this password, as it will be required when using the certificate.
Note that for local development, the password can be left empty.
Add Certificate to the Project
Use the NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH
environment variable to point at the certificate you created.
Details about environment variables associated with certificates can be found here.