Using self-signed certificates for HTTPS security
This tutorial explains how to create a self-signed SSL security certificate and implement it in the Net4Care server. Note that the self-signed certificated are to be used for testing purposes. A production SSL certificate should be signed by a verified certificate authority (CA). A more detailed guide on how to create SSL certificates cane be found here
A self-signed certificate for Net4Care server is created and installed using the following steps:
Create the the certificate.
To create the SSL certificate, run the following command in a terminal:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
keytool will ask for some additional information to attach to the certificate.
$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: net4care.dk What is the name of your organizational unit? [Unknown]: net4care What is the name of your organization? [Unknown]: Caretech Innovation What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: dk Is CN=net4care.dk, OU=net4care, O=Caretech Innovation, L=Unknown, ST=Unknown, C=dk correct? [no]: y Enter key password for <jetty> (RETURN if same as keystore password):
This will create a file called keystore that is the certificate file.
Install the SSL certificate
The Net4Care HTTPS configuration is in (root)/n4c_osgi/n4c_receiver/pom.xml
. The following is an example except:
<properties> [...] <org.apache.felix.https.enable>true</org.apache.felix.https.enable> <org.apache.felix.http.enable>false</org.apache.felix.http.enable> <org.osgi.service.http.port.secure>8443</org.osgi.service.http.port.secure> <org.apache.felix.https.keystore>../resources/keystore</org.apache.felix.https.keystore> <org.apache.felix.https.keystore.password>abc123</org.apache.felix.https.keystore.password> [...] </properties>
The first two lines enables HTTPS and disables HTTP while the next lines defines the port for HTTPS. The path to the keystore is ../resources/keystore
(relative to the working directory of the Net4Care server) and the password for the keystore is abc123
.
Run the Net4Care server
Start the Net4Care server. When the server is running, a message that Jetty has started and the ports that the servers is running should appear close to the end of the maven output:
Welcome to Apache Felix Gogo [...] [Jetty HTTP Service] INFO org.apache.felix.http.jetty - Started jetty 6.1.x at port(s) HTTPS:8443 [FelixStartLevel] INFO org.net4care.receiver.delegate.StandardHttpServlet - Net4Care observation server started on /observation
The server can now be tested by browsing to https://localhost:8443/observation/.
Since the certificate in self signed, you will have to manually accept the certificate in the browser.