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 ######################################################################
17 PASSWORD_SERVER = $(shell grep output_password server.cnf | sed 's/.*=//;s/^ *//')
18 PASSWORD_CA = $(shell grep output_password ca.cnf | sed 's/.*=//;s/^ *//')
19 PASSWORD_CLIENT = $(shell grep output_password client.cnf | sed 's/.*=//;s/^ *//')
21 USER_NAME = $(shell grep emailAddress client.cnf | grep '@' | sed 's/.*=//;s/^ *//')
23 ######################################################################
25 # Make the necessary files, but not client certificates.
27 ######################################################################
29 all: dh random server ca
40 ######################################################################
42 # Diffie-Hellman parameters
44 ######################################################################
46 openssl dhparam -out dh $(DH_KEY_SIZE)
48 ######################################################################
50 # Create a new self-signed CA certificate
52 ######################################################################
54 openssl req -new -x509 -keyout ca.key -out ca.pem -config ./ca.cnf
56 ######################################################################
58 # Create a new server certificate, signed by the above CA.
60 ######################################################################
61 server.req server.key:
62 openssl req -new -out server.req -keyout server.key -config ./server.cnf
64 server.crt: server.req ca.key ca.pem index.txt serial
65 openssl ca -batch -keyfile ca.key -cert ca.pem -in server.req -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnf
67 server.p12: server.crt
68 openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER)
70 server.pem: server.p12
71 openssl pkcs12 -in server.p12 -out server.pem -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER)
73 ######################################################################
75 # Create a new client certificate, signed by the the above server
78 ######################################################################
79 client.req client.key:
80 openssl req -new -out client.req -keyout client.key -config ./client.cnf
82 client.crt: client.req server.crt server.key index.txt serial
83 openssl ca -batch -keyfile server.key -cert server.crt -in client.req -key $(PASSWORD_SERVER) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnf
85 client.p12: client.crt
86 openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
88 client.pem: client.p12
89 openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_CLIENT)
90 cp client.pem $(USER_NAME).pem
92 ######################################################################
94 # Miscellaneous rules.
96 ######################################################################
104 @if [ -e /dev/urandom ] ; then \
105 dd if=/dev/urandom of=./random count=10 >/dev/null 2>&1; \
111 openssl x509 -text -in server.crt
114 @rm -f *~ *old client.req client.key client.crt client.p12 client.pem
117 # Run distclean ONLY if there's a CVS directory, AND it points to
118 # cvs.freeradius.org. Otherwise, it would be easy for administrators
119 # to type "make distclean", and destroy their CA and server certificates.
122 @if [ -d CVS -a `grep -i 'cvs\.freeradius\.org' CVS/Root` ] ; then \
123 rm -f *~ dh *req *.crt *.p12 *.der *.pem *.key index.txt* \