Rev 4 | Blame | Compare with Previous | Last modification | View Log | RSS feed
######################################################################## Make file to be installed in /etc/raddb/certs to enable# the easy creation of certificates.## See the README file in this directory for more information.## $Id: de56a19f2f8b0b764c076cd825d8375f9c7e0c85 $#######################################################################DH_KEY_SIZE = 1024## Set the passwords#PASSWORD_SERVER = `grep output_password server.cnf | sed 's/.*=//;s/^ *//'`PASSWORD_CA = `grep output_password ca.cnf | sed 's/.*=//;s/^ *//'`PASSWORD_CLIENT = `grep output_password client.cnf | sed 's/.*=//;s/^ *//'`USER_NAME = `grep emailAddress client.cnf | grep '@' | sed 's/.*=//;s/^ *//'`CA_DEFAULT_DAYS = `grep default_days ca.cnf | sed 's/.*=//;s/^ *//'`######################################################################## Make the necessary files, but not client certificates.#######################################################################.PHONY: allall: index.txt serial dh random server ca.PHONY: clientclient: client.pem.PHONY: caca: ca.der.PHONY: serverserver: server.pem server.vrfy######################################################################## Diffie-Hellman parameters#######################################################################dh:openssl dhparam -out dh $(DH_KEY_SIZE)######################################################################## Create a new self-signed CA certificate#######################################################################ca.key ca.pem: ca.cnf@[ -f index.txt ] || $(MAKE) index.txt@[ -f serial ] || $(MAKE) serialopenssl req -new -x509 -keyout ca.key -out ca.pem \-days $(CA_DEFAULT_DAYS) -config ./ca.cnfca.der: ca.pemopenssl x509 -inform PEM -outform DER -in ca.pem -out ca.der######################################################################## Create a new server certificate, signed by the above CA.#######################################################################server.csr server.key: server.cnfopenssl req -new -out server.csr -keyout server.key -config ./server.cnfserver.crt: server.csr ca.key ca.pemopenssl ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key $(PASSWORD_CA) -out server.crt -extensions xpserver_ext -extfile xpextensions -config ./server.cnfserver.p12: server.crtopenssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER)server.pem: server.p12openssl pkcs12 -in server.p12 -out server.pem -passin pass:$(PASSWORD_SERVER) -passout pass:$(PASSWORD_SERVER).PHONY: server.vrfyserver.vrfy: ca.pemopenssl verify -CAfile ca.pem server.pem######################################################################## Create a new client certificate, signed by the the above CA#######################################################################client.csr client.key: client.cnfopenssl req -new -out client.csr -keyout client.key -config ./client.cnfclient.crt: client.csr ca.pem ca.keyopenssl ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key $(PASSWORD_CA) -out client.crt -extensions xpclient_ext -extfile xpextensions -config ./client.cnfclient.p12: client.crtopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)client.pem: client.p12openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)cp client.pem $(USER_NAME).pem.PHONY: client.vrfyclient.vrfy: ca.pem client.pemc_rehash .openssl verify -CApath . client.pem######################################################################## Miscellaneous rules.#######################################################################index.txt:@touch index.txtserial:@echo '01' > serialrandom:@if [ -c /dev/urandom ] ; then \dd if=/dev/urandom of=./random count=10 >/dev/null 2>&1; \else \date > ./random; \fiprint:openssl x509 -text -in server.crtprintca:openssl x509 -text -in ca.pemclean:@rm -f *~ *old client.csr client.key client.crt client.p12 client.pem## Make a target that people won't run too often.#destroycerts:rm -f *~ dh *.csr *.crt *.p12 *.der *.pem *.key index.txt* \serial* random *\.0 *\.1