1 ######################################################################
3 # Make file to be installed in /etc/raddb/certs to enable
4 # the easy creation of certificates.
6 # See the README file in this directory for more information.
10 ######################################################################
19 ######################################################################
21 # Make the necessary files, but not client certificates.
23 ######################################################################
25 all: index.txt serial dh server ca client
34 server: server.pem server.vrfy
37 verify: server.vrfy client.vrfy
39 passwords.mk: server.cnf ca.cnf client.cnf
40 @echo "PASSWORD_SERVER = '$(shell grep output_password server.cnf | sed 's/.*=//;s/^ *//')'" > $@
41 @echo "PASSWORD_CA = '$(shell grep output_password ca.cnf | sed 's/.*=//;s/^ *//')'" >> $@
42 @echo "PASSWORD_CLIENT = '$(shell grep output_password client.cnf | sed 's/.*=//;s/^ *//')'" >> $@
43 @echo "USER_NAME = '$(shell grep emailAddress client.cnf | grep '@' | sed 's/.*=//;s/^ *//')'" >> $@
44 @echo "CA_DEFAULT_DAYS = '$(shell grep default_days ca.cnf | sed 's/.*=//;s/^ *//')'" >> $@
46 ######################################################################
48 # Diffie-Hellman parameters
50 ######################################################################
52 openssl gendh -out dh -2 $(DH_KEY_SIZE)
54 ######################################################################
56 # Create a new self-signed CA certificate
58 ######################################################################
60 @[ -f index.txt ] || $(MAKE) index.txt
61 @[ -f serial ] || $(MAKE) serial
62 openssl req -new -x509 -keyout ca.key -out ca.pem \
63 -days $(CA_DEFAULT_DAYS) -config ./ca.cnf
66 openssl x509 -inform PEM -outform DER -in ca.pem -out ca.der
68 ######################################################################
70 # Create a new server certificate, signed by the above CA.
72 ######################################################################
73 server.csr server.key: server.cnf
74 openssl req -new -out server.csr -keyout server.key -config ./server.cnf
76 server.crt: server.csr ca.key ca.pem
77 openssl ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf
79 server.p12: server.crt
80 openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER)
82 server.pem: server.p12
83 openssl pkcs12 -in server.p12 -out server.pem -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER)
87 @openssl verify -CAfile ca.pem server.pem
89 ######################################################################
91 # Create a new client certificate, signed by the the above server
94 ######################################################################
95 client.csr client.key: client.cnf
96 openssl req -new -out client.csr -keyout client.key -config ./client.cnf
98 client.crt: client.csr ca.pem ca.key
99 openssl ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf
101 client.p12: client.crt
102 openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
104 client.pem: client.p12
105 openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
106 cp client.pem $(USER_NAME).pem
109 client.vrfy: ca.pem client.pem
111 openssl verify -CApath . client.pem
113 ######################################################################
115 # Miscellaneous rules.
117 ######################################################################
125 openssl x509 -text -in server.crt
128 openssl x509 -text -in ca.pem
131 @rm -f *~ *old client.csr client.key client.crt client.p12 client.pem
134 # Make a target that people won't run too often.
137 rm -f *~ dh *.csr *.crt *.p12 *.der *.pem *.key index.txt* \