-
-
Save doylecnn/4f41218dbde36701ae6f527b3a8884fa to your computer and use it in GitHub Desktop.
Script to create self-signed CA certificates, server certificates, and client certificates for testing MongoDB with SSL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# For multi domain, add reqexts option when generate cer | |
# --reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com")) | |
# For wildcard domain, using '*' at first | |
# -subj "/C=AU/ST=NSW/L=Sydney/O=MongoDB/OU=root/CN=*.example.com/[email protected]" | |
# Generate self signed root CA cert | |
openssl req -nodes -x509 -newkey rsa:2048 -keyout ca.key -out ca.crt -subj "/C=AU/ST=NSW/L=Sydney/O=MongoDB/OU=root/CN=`hostname -f`/[email protected]" -days 365 | |
# Generate server cert to be signed | |
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj "/C=AU/ST=NSW/L=Sydney/O=MongoDB/OU=server/CN=`hostname -f`/[email protected]" -days 365 | |
# Sign the server cert | |
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt | |
# Create server PEM file | |
cat server.key server.crt > server.pem | |
# Generate client cert to be signed | |
openssl req -nodes -newkey rsa:2048 -keyout client.key -out client.csr -subj "/C=AU/ST=NSW/L=Sydney/O=MongoDB/OU=client/CN=`hostname -f`/[email protected]" -days 365 | |
# Sign the client cert | |
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt | |
# Create client PEM file | |
cat client.key client.crt > client.pem | |
# Create clientPFX file (for Java, C#, etc) | |
# openssl pkcs12 -inkey client.key -in client.crt -export -out client.pfx | |
# Start mongod with SSL | |
# mkdir -p data/db | |
# mongod --sslMode requireSSL --sslPEMKeyFile server.pem --sslCAFile ca.crt --dbpath data/db --logpath data/mongod.log --fork | |
# Connect to mongod with SSL | |
# mongo --ssl --sslCAFile ca.crt --sslPEMKeyFile client.pem --host `hostname -f` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment