aboutsummaryrefslogtreecommitdiff
path: root/genkeys.sh
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2020-04-12 19:18:31 +0200
committerAlex Auvolat <alex@adnab.me>2020-04-12 19:18:31 +0200
commitc788fc9f9e2c9128ea0dd5f28c1bafe8ba3b369c (patch)
tree30c9e34b979bd8d38ef93e8371a4fea087556e72 /genkeys.sh
parentd2814b5c3374f8b99a81dbb9fa3614c875cfc5e6 (diff)
downloadgarage-c788fc9f9e2c9128ea0dd5f28c1bafe8ba3b369c.tar.gz
garage-c788fc9f9e2c9128ea0dd5f28c1bafe8ba3b369c.zip
Cleanup
Diffstat (limited to 'genkeys.sh')
-rwxr-xr-xgenkeys.sh35
1 files changed, 35 insertions, 0 deletions
diff --git a/genkeys.sh b/genkeys.sh
index ae493248..92d86ab8 100755
--- a/genkeys.sh
+++ b/genkeys.sh
@@ -7,6 +7,8 @@ cd $(dirname $0)
mkdir -p pki
cd pki
+# Create a certificate authority that both the client side and the server side of
+# the RPC protocol will use to authenticate the other side.
if [ ! -f garage-ca.key ]; then
echo "Generating Garage CA keys..."
openssl genrsa -out garage-ca.key 4096
@@ -14,6 +16,9 @@ if [ ! -f garage-ca.key ]; then
fi
+# Generate a certificate that can be used either as a server certificate
+# or a client certificate. This is what the RPC client and server will use
+# to prove that they are authenticated by the CA.
if [ ! -f garage.crt ]; then
echo "Generating Garage agent keys..."
if [ ! -f garage.key ]; then
@@ -46,3 +51,33 @@ EOF
-CA garage-ca.crt -CAkey garage-ca.key -CAcreateserial \
-out garage.crt -days 365
fi
+
+# Client-only certificate used for the CLI
+if [ ! -f garage-client.crt ]; then
+ echo "Generating Garage client keys..."
+ if [ ! -f garage-client.key ]; then
+ openssl genrsa -out garage-client.key 4096
+ fi
+ openssl req -new -sha256 -key garage-client.key -subj "/C=FR/O=Garage" \
+ -out garage-client.csr
+ openssl req -in garage-client.csr -noout -text
+ openssl x509 -req -in garage-client.csr \
+ -extensions v3_req \
+ -extfile <(cat <<EOF
+[req]
+distinguished_name = req_distinguished_name
+req_extensions = v3_req
+prompt = no
+
+[req_distinguished_name]
+C = FR
+O = Garage
+
+[v3_req]
+keyUsage = keyEncipherment, dataEncipherment
+extendedKeyUsage = clientAuth
+EOF
+) \
+ -CA garage-ca.crt -CAkey garage-ca.key -CAcreateserial \
+ -out garage-client.crt -days 365
+fi