cc12464c6c7754aff2f0c8d6e116708c94ff2168
[freeradius.git] / raddb / certs / Makefile
1 ######################################################################
2 #
3 #       Make file to be installed in /etc/raddb/certs to enable
4 #       the easy creation of certificates.
5 #
6 #       See the README file in this directory for more information.
7 #
8 #       $Id$
9 #
10 ######################################################################
11
12 DH_KEY_SIZE     = 2048
13
14 #
15 #  Set the passwords
16 #
17 -include passwords.mk
18
19 ######################################################################
20 #
21 #  Make the necessary files, but not client certificates.
22 #
23 ######################################################################
24 .PHONY: all
25 all: index.txt serial dh server ca client
26
27 .PHONY: client
28 client: client.pem
29
30 .PHONY: ca
31 ca: ca.der
32
33 .PHONY: server
34 server: server.pem server.vrfy
35
36 .PHONY: verify
37 verify: server.vrfy client.vrfy
38
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/^ *//')'"                  >> $@
45
46 ######################################################################
47 #
48 #  Diffie-Hellman parameters
49 #
50 ######################################################################
51 dh:
52         openssl gendh -out dh -2 $(DH_KEY_SIZE)
53
54 ######################################################################
55 #
56 #  Create a new self-signed CA certificate
57 #
58 ######################################################################
59 ca.key ca.pem: ca.cnf
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
64
65 ca.der: ca.pem
66         openssl x509 -inform PEM -outform DER -in ca.pem -out ca.der
67
68 ######################################################################
69 #
70 #  Create a new server certificate, signed by the above CA.
71 #
72 ######################################################################
73 server.csr server.key: server.cnf
74         openssl req -new  -out server.csr -keyout server.key -config ./server.cnf
75
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
78
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)
81
82 server.pem: server.p12
83         openssl pkcs12 -in server.p12 -out server.pem -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER)
84
85 .PHONY: server.vrfy
86 server.vrfy: ca.pem
87         @openssl verify -CAfile ca.pem server.pem
88
89 ######################################################################
90 #
91 #  Create a new client certificate, signed by the the above server
92 #  certificate.
93 #
94 ######################################################################
95 client.csr client.key: client.cnf
96         openssl req -new  -out client.csr -keyout client.key -config ./client.cnf
97
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
100
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)
103
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
107
108 .PHONY: client.vrfy
109 client.vrfy: ca.pem client.pem
110         c_rehash .
111         openssl verify -CApath . client.pem
112
113 ######################################################################
114 #
115 #  Miscellaneous rules.
116 #
117 ######################################################################
118 index.txt:
119         @touch index.txt
120
121 serial:
122         @echo '01' > serial
123
124 print:
125         openssl x509 -text -in server.crt
126
127 printca:
128         openssl x509 -text -in ca.pem
129
130 clean:
131         @rm -f *~ *old client.csr client.key client.crt client.p12 client.pem
132
133 #
134 #       Make a target that people won't run too often.
135 #
136 destroycerts:
137         rm -f *~ dh *.csr *.crt *.p12 *.der *.pem *.key index.txt* \
138                         serial*  *\.0 *\.1