aboutsummaryrefslogtreecommitdiffstats
path: root/certs/GNUmakefile
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2017-10-31 17:28:23 +0100
committerKim Alvefur <zash@zash.se>2017-10-31 17:28:23 +0100
commite156c05ad42fdf522a3421ff98e5eb961ac6df41 (patch)
tree5e449df964686e2fb0522e43831d1e1ade56023e /certs/GNUmakefile
parent14b65a9175c53c637d03966c9172a9c5b96c5da4 (diff)
downloadprosody-e156c05ad42fdf522a3421ff98e5eb961ac6df41.tar.gz
prosody-e156c05ad42fdf522a3421ff98e5eb961ac6df41.zip
Rename Makefile -> GNUmakefile to reflect dependency on GNU Make
Diffstat (limited to 'certs/GNUmakefile')
-rw-r--r--certs/GNUmakefile66
1 files changed, 66 insertions, 0 deletions
diff --git a/certs/GNUmakefile b/certs/GNUmakefile
new file mode 100644
index 00000000..fd4a2932
--- /dev/null
+++ b/certs/GNUmakefile
@@ -0,0 +1,66 @@
+.DEFAULT: localhost.crt
+keysize=2048
+
+# How to:
+# First, `make yourhost.cnf` which creates a openssl config file.
+# Then edit this file and fill in the details you want it to have,
+# and add or change hosts and components it should cover.
+# Then `make yourhost.key` to create your private key, you can
+# include keysize=number to change the size of the key.
+# Then you can either `make yourhost.csr` to generate a certificate
+# signing request that you can submit to a CA, or `make yourhost.crt`
+# to generate a self signed certificate.
+
+.PRECIOUS: %.cnf %.key
+
+# To request a cert
+%.csr: %.cnf %.key
+ openssl req -new -key $(lastword $^) \
+ -sha256 -utf8 -config $(firstword $^) -out $@
+
+%.csr: %.cnf
+ umask 0077 && touch $*.key
+ openssl req -new -newkey rsa:$(keysize) -nodes -keyout $*.key \
+ -sha256 -utf8 -config $^ -out $@
+ @chmod 400 $*.key
+
+%.csr: %.key
+ openssl req -new -key $^ -utf8 -subj /CN=$* -out $@
+
+%.csr:
+ umask 0077 && touch $*.key
+ openssl req -new -newkey rsa:$(keysize) -nodes -keyout $*.key \
+ -utf8 -subj /CN=$* -out $@
+ @chmod 400 $*.key
+
+# Self signed
+%.crt: %.cnf %.key
+ openssl req -new -x509 -key $(lastword $^) -days 365 -sha256 -utf8 \
+ -config $(firstword $^) -out $@
+
+%.crt: %.cnf
+ umask 0077 && touch $*.key
+ openssl req -new -x509 -newkey rsa:$(keysize) -nodes -keyout $*.key \
+ -days 365 -sha256 -utf8 -config $(firstword $^) -out $@
+ @chmod 400 $*.key
+
+%.crt: %.key
+ openssl req -new -x509 -key $^ -days 365 -sha256 -utf8 -subj /CN=$* -out $@
+
+%.crt:
+ umask 0077 && touch $*.key
+ openssl req -new -x509 -newkey rsa:$(keysize) -nodes -keyout $*.key \
+ -days 365 -sha256 -out $@ -utf8 -subj /CN=$*
+ @chmod 400 $*.key
+
+# Generate a config from the example
+%.cnf:
+ sed 's,example\.com,$*,g' openssl.cnf > $@
+
+%.key:
+ umask 0077 && openssl genrsa -out $@ $(keysize)
+ @chmod 400 $@
+
+# Generate Diffie-Hellman parameters
+dh-%.pem:
+ openssl dhparam -out $@ $*