Table of Contents
Create an mTLS Cert Package
Building mutual TLS (mTLS) certificates using a local Certificate Authority (CA) involves several steps. Here’s a general guide to help you through the process:
Step 1: Set Up Your Local Certificate Authority
Create a Private Key for the CA
openssl genrsa -out ca.key 2048
Create a Self-Signed Certificate for the CA
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt
You will be prompted to enter information for the certificate.
Step 2: Generate Server and Client Certificates
For the Server Certificate:
Create a Private Key for the Server
openssl genrsa -out server.key 2048
Create a Certificate Signing Request (CSR) for the Server
openssl req -new -key server.key -out server.csr
Sign the Server CSR with the CA
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -out server.crt -days 500 -sha256
For the Client Certificate:
Create a Private Key for the Client
openssl genrsa -out client.key 2048
Create a Certificate Signing Request (CSR) for the Client
openssl req -new -key client.key -out client.csr
Sign the Client CSR with the CA
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key \ -CAcreateserial -out client.crt -days 500 -sha256
Step 3: Verify the Certificates
You can verify the certificates to ensure they are correctly signed
Verify the Server Certificate
openssl verify -CAfile ca.crt server.crt
Verify the Client Certificate
openssl verify -CAfile ca.crt client.crt
Step 4: Configure Your Server for mTLS
Depending on the server software you are using (e.g., Nginx, Apache, etc.), you will need to configure it to require client certificates and to trust your CA.
Step 5: Test the mTLS Setup
Start your server with the configured certificates.
Use a client (like curl
or a custom application) to connect to the server, providing the client certificate and key.
Example using curl
curl -v --key client.key --cert client.crt \ --cacert ca.crt https://your-server-url
Conclusion
This process sets up a basic mTLS configuration using a local CA. Make sure to adjust the configurations based on your specific requirements and security policies.