Port "use_tunneled_reply" fix for MS-CHAP from branch_1_1
[freeradius.git] / scripts / CA.certs
1 #!/bin/sh
2
3 #
4 #  This is a NON-INTERACTIVE script to help generate certificates for
5 #  use with the EAP-TLS module.
6 #
7 #       $Id$
8
9 #
10 #  This environment variable should point to the SSL installation
11 #
12 [ "$SSL" = "" ] && SSL=/usr/local/ssl
13 export SSL
14
15 #
16 #  Edit the following variables for your organization.
17 #
18 COUNTRY="CA"
19 PROVINCE="Province"
20 CITY="Some City"
21 ORGANIZATION="Organization"
22 ORG_UNIT=`hostname`
23 PASSWORD="whatever"
24
25 COMMON_NAME_CLIENT="Client certificate"
26 EMAIL_CLIENT="client@example.com"
27 PASSWORD_CLIENT=$PASSWORD
28
29 COMMON_NAME_SERVER="Server certificate"
30 EMAIL_SERVER="server@example.com"
31 PASSWORD_SERVER=$PASSWORD
32
33 COMMON_NAME_ROOT="Root certificate"
34 EMAIL_ROOT="root@example.com"
35 PASSWORD_ROOT=$PASSWORD
36
37 #
38 #  lifetime, in days, of the certs
39 #
40 LIFETIME=730
41
42 ######################################################################
43 #
44 #  Don't change anything below this line...
45 #
46 ######################################################################
47
48 #
49 #  Prefer the SSL configured above, over any previous installation.
50 #
51 PATH=${SSL}/bin/:${SSL}/misc:${PATH}
52 LD_LIBRARY_PATH=${SSL}/lib
53 export PATH LD_LIBRARY_PATH
54
55 rm -rf demoCA roo* cert* *.pem *.der
56
57 echo -e ""
58 echo -e "\t\t##################"
59 echo -e "\t\tcreate private key"
60 echo -e "\t\tname : name-root"
61 echo -e "\t\tCA.pl -newcert"
62 echo -e "\t\t##################\n"
63
64 (echo $COUNTRY
65 echo $PROVINCE
66 echo $CITY
67 echo $ORGANIZATION
68 echo $ORG_UNIT
69 echo $COMMON_NAME_CLIENT
70 echo $EMAIL_CLIENT
71 ) | openssl req -new -x509 -keyout newreq.pem -out newreq.pem -days $LIFETIME -passin pass:$PASSWORD_CLIENT -passout pass:$PASSWORD_CLIENT
72 if [ "$?" != "0" ]
73 then
74     echo "Failed to create client certificate"
75     exit 1
76 fi
77
78 echo -e ""
79 echo -e "\t\t##################"
80 echo -e "\t\tcreate CA"
81 echo -e "\t\tuse just created 'newreq.pem' private key as filename"
82 echo -e "\t\tCA.pl -newca"
83 echo -e "\t\t##################\n"
84
85 echo "newreq.pem" | CA.pl -newca || exit 2
86
87 #ls -lg demoCA/private/cakey.pem
88
89 echo -e ""
90 echo -e "\t\t##################"
91 echo -e "\t\texporting ROOT CA"
92 echo -e "\t\tCA.pl -newreq"
93 echo -e "\t\tCA.pl -signreq"
94 echo -e "\t\topenssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.pem"
95 echo -e "\t\topenssl pkcs12 -in root.cer -out root.pem"
96 echo -e "\t\t##################\n"
97
98 openssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.p12 -cacerts -passin pass:$PASSWORD_ROOT -passout pass:$PASSWORD_ROOT
99 openssl pkcs12 -in root.p12 -out root.pem -passin pass:$PASSWORD_ROOT -passout pass:$PASSWORD_ROOT
100 openssl x509 -inform PEM -outform DER -in root.pem -out root.der 
101
102 echo -e ""
103 echo -e "\t\t##################"
104 echo -e "\t\tcreating client certificate"
105 echo -e "\t\tname : name-clt"
106 echo -e "\t\tclient certificate stored as cert-clt.pem"
107 echo -e "\t\tCA.pl -newreq"
108 echo -e "\t\tCA.pl -signreq"
109 echo -e "\t\t##################\n"
110
111 (echo $COUNTRY
112 echo $PROVINCE
113 echo $CITY
114 echo $ORGANIZATION
115 echo $ORG_UNIT
116 echo $COMMON_NAME_SERVER
117 echo $EMAIL_SERVER
118 echo $PASSWORD_SERVER
119 echo "testing"
120 ) | openssl req -new -keyout newreq.pem -out newreq.pem -days $LIFETIME -passin pass:$PASSWORD_SERVER -passout pass:$PASSWORD_SERVER
121 if [ "$?" != "0" ]
122 then
123     echo "Failed to create server certificate"
124     exit 1
125 fi
126
127 (echo y
128 echo y) | openssl ca  -policy policy_anything -out newcert.pem -passin pass:$PASSWORD_SEREVER -key $PASSWORD_SERVER -extensions xpclient_ext -extfile xpextensions -infiles newreq.pem
129 if [ "$?" != "0" ]
130 then
131     echo "Failed to do sign certificate"
132     exit 1
133 fi
134
135 openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-clt.p12 -clcerts -passin pass:$PASSWORD_CLIENT -passout pass:$PASSWORD_CLIENT || exit 8
136 openssl pkcs12 -in cert-clt.p12 -out cert-clt.pem -passin pass:$PASSWORD_CLIENT -passout pass:$PASSWORD_CLIENT || exit 9
137 openssl x509 -inform PEM -outform DER -in cert-clt.pem -out cert-clt.der || exit 10
138
139 echo -e ""
140 echo -e "\t\t##################"
141 echo -e "\t\tcreating server certificate"
142 echo -e "\t\tname : name-srv"
143 echo -e "\t\tserver certificate stored as cert-srv.pem"
144 echo -e "\t\tCA.pl -newreq"
145 echo -e "\t\tCA.pl -signreq"
146 echo -e "\t\t##################\n"
147
148 (echo $COUNTRY
149 echo $PROVINCE
150 echo $CITY
151 echo $ORGANIZATION
152 echo $ORG_UNIT
153 echo $COMMON_NAME_ROOT
154 echo $EMAIL_ROOT
155 echo $PASSWORD_ROOT
156 echo $ORG_UNIT
157 ) | openssl req -new  -keyout newreq.pem -out newreq.pem -days $LIFETIME -passin pass:$PASSWORD_ROOT -passout pass:$PASSWORD_ROOT
158 if [ "$?" != "0" ]
159 then
160     echo "Failed to create root certificate"
161     exit 1
162 fi
163
164 (echo y
165 echo y) | openssl ca  -policy policy_anything  -out newcert.pem -passin pass:$PASSWORD_ROOT -key $PASSWORD_ROOT -extensions xpserver_ext -extfile xpextensions -infiles newreq.pem 
166 if [ "$?" != "0" ]
167 then
168     echo "Failed to sign root certificate"
169     exit 1
170 fi
171
172 openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-srv.p12 -clcerts -passin pass:$PASSWORD_SERVER -passout pass:$PASSWORD_SERVER || exit 5
173 openssl pkcs12 -in cert-srv.p12 -out cert-srv.pem -passin pass:$PASSWORD_SERVER -passout pass:$PASSWORD_SERVER || exit 6
174 openssl x509 -inform PEM -outform DER -in cert-srv.pem -out cert-srv.der || exit 7
175
176 echo -e "\n\t\t#################################"
177 echo -e "\t\tDONE.  Thank you for your patience."
178 echo -e "\t\t###################################\n"