blob: 80985f730862a8d9cb47c8e42472e5fbde9f8bcb [file] [log] [blame]
Dmitry Shmidtdf5a7e42014-04-02 12:59:59 -07001Hotspot 2.0 OSU server
2======================
3
4The information in this document is based on the assumption that Ubuntu
512.04 server (64-bit) distribution is used and the web server is
6Apache2. Neither of these are requirements for the installation, but if
7other combinations are used, the package names and configuration
8parameters may need to be adjusted.
9
10NOTE: This implementation and the example configuration here is meant
11only for testing purposes in a lab environment. This design is not
12secure to be installed in a publicly available Internet server without
13considerable amount of modification and review for security issues.
14
15NOTE: While this describes use on Ubuntu 12.04, the version of Apache2
16included in that distribution is not new enough to support all OSU
17server validation steps. In other words, it may be most adapt the steps
18described here to Ubuntu 13.10.
19
20
21Build dependencies
22------------------
23
24Ubuntu 12.04 server
25- default installation
26- upgraded to latest package versions
27 sudo apt-get update
28 sudo apt-get upgrade
29
30Packages needed for running the service:
31 sudo apt-get install sqlite3
32 sudo apt-get install apache2
33 sudo apt-get install php5-sqlite libapache2-mod-php5
34
35Additional packages needed for building the components:
36 sudo apt-get install build-essential
37 sudo apt-get install libsqlite3-dev
38 sudo apt-get install libssl-dev
39 sudo apt-get install libxml2-dev
40
41
42Installation location
43---------------------
44
45Select a location for the installation root directory. The example here
46assumes /home/user/hs20-server to be used, but this can be changed by
47editing couple of files as indicated below.
48
49sudo mkdir -p /home/user/hs20-server
50sudo chown $USER /home/user/hs20-server
51mkdir -p /home/user/hs20-server/spp
52mkdir -p /home/user/hs20-server/AS
53
54
55Build
56-----
57
58# hostapd as RADIUS server
59cd hostapd
60
61#example build configuration
62cat > .config <<EOF
63CONFIG_DRIVER_NONE=y
64CONFIG_PKCS12=y
65CONFIG_RADIUS_SERVER=y
66CONFIG_EAP=y
67CONFIG_EAP_TLS=y
68CONFIG_EAP_MSCHAPV2=y
69CONFIG_EAP_PEAP=y
70CONFIG_EAP_GTC=y
71CONFIG_EAP_TTLS=y
72CONFIG_EAP_SIM=y
73CONFIG_EAP_AKA=y
74CONFIG_EAP_AKA_PRIME=y
75CONFIG_SQLITE=y
76CONFIG_HS20=y
77EOF
78
79make hostapd hlr_auc_gw
80cp hostapd hlr_auc_gw /home/user/hs20-server/AS
81
82# build hs20_spp_server
83cd ../hs20/server
84make clean
85make
86cp hs20_spp_server /home/user/hs20-server/spp
87# prepare database (web server user/group needs to have write access)
88mkdir -p /home/user/hs20-server/AS/DB
89sudo chgrp www-data /home/user/hs20-server/AS/DB
90sudo chmod g+w /home/user/hs20-server/AS/DB
91sqlite3 /home/user/hs20-server/AS/DB/eap_user.db < sql.txt
92sudo chgrp www-data /home/user/hs20-server/AS/DB/eap_user.db
93sudo chmod g+w /home/user/hs20-server/AS/DB/eap_user.db
94# add example configuration (note: need to update URLs to match the system)
95sqlite3 /home/user/hs20-server/AS/DB/eap_user.db < sql-example.txt
96
97# copy PHP scripts
98# Modify config.php if different installation directory is used.
99# Modify PHP scripts to get the desired behavior for user interaction (or use
100# the examples as-is for initial testing).
101cp -r www /home/user/hs20-server
102
103
104# Configure subscription policies
105mkdir -p /home/user/hs20-server/spp/policy
106cat > /home/user/hs20-server/spp/policy/default.xml <<EOF
107<Policy>
108 <PolicyUpdate>
109 <UpdateInterval>30</UpdateInterval>
110 <UpdateMethod>ClientInitiated</UpdateMethod>
111 <Restriction>Unrestricted</Restriction>
112 <URI>https://policy-server.osu.example.com/hs20/spp.php</URI>
113 </PolicyUpdate>
114</Policy>
115EOF
116
117
118# Install Hotspot 2.0 SPP and OMA DM XML schema/DTD files
119
120# XML schema for SPP
121# Copy the latest XML schema into /home/user/hs20-server/spp/spp.xsd
122
123# OMA DM Device Description Framework DTD
124# Copy into /home/user/hs20-server/spp/dm_ddf-v1_2.dtd
125# http://www.openmobilealliance.org/tech/DTD/dm_ddf-v1_2.dtd
126
127
128# Configure RADIUS authentication service
129# Note: Change the URL to match the setup
130# Note: Install AAA server key/certificate and root CA in Key directory
131
132cat > /home/user/hs20-server/AS/as-sql.conf <<EOF
133driver=none
134radius_server_clients=as.radius_clients
135eap_server=1
136eap_user_file=sqlite:DB/eap_user.db
137ca_cert=Key/ca.pem
138server_cert=Key/server.pem
139private_key=Key/server.key
140private_key_passwd=passphrase
141eap_sim_db=unix:/tmp/hlr_auc_gw.sock db=eap_sim.db
142subscr_remediation_url=https://subscription-server.osu.example.com/hs20/spp.php
143EOF
144
145# Set RADIUS passphrase for the APs
146# Note: Modify to match the setup
147cat > /home/user/hs20-server/AS/as.radius_clients <<EOF
1480.0.0.0/0 radius
149EOF
150
151
152Start RADIUS authentication server
153----------------------------------
154
155cd /home/user/hs20-server/AS
156./hostapd -B as-sql.conf
157
158
159Configure web server
160--------------------
161
162Edit /etc/apache2/sites-available/default-ssl
163
164Add following block just before "SSL Engine Switch" line":
165
166 Alias /hs20/ "/home/user/hs20-server/www/"
167 <Directory "/home/user/hs20-server/www/">
168 Options Indexes MultiViews FollowSymLinks
169 AllowOverride None
170 Order allow,deny
171 Allow from all
172 </Directory>
173
174Update SSL configuration to use the OSU server certificate/key.
175
176Enable default-ssl site and restart Apache2:
177 sudo a2ensite default-ssl
178 sudo a2enmod ssl
179 sudo service apache2 restart
180
181
182Management UI
183-------------
184
185The sample PHP scripts include a management UI for testing
186purposes. That is available at https://<server>/hs20/users.php
187
188
189AP configuration
190----------------
191
192APs can now be configured to use the OSU server as the RADIUS
193authentication server. In addition, the OSU Provider List ANQP element
194should be configured to use the SPP (SOAP+XML) option and with the
195following Server URL:
196https://<server>/hs20/spp.php/signup?realm=example.com