lars
2ecc20e905
added a method 'create_misc_config_file' to cryptobox.core.settings used this method to create the certificate file improved the description on how to set up an encrypted webinterface connection added description of the 'encrypted_webinterface' plugin to README.ssl moved 'coding_guidelines.txt' to the wiki
114 lines
4.5 KiB
Text
114 lines
4.5 KiB
Text
Encrypting the http traffic to the CryptoBox webserver with SSL
|
|
|
|
This file describes how to encrypt your connection to the CryptoBox webserver.
|
|
This is highly recommended as the encryption password for your data could be
|
|
exposed to intruders in your local network otherwise.
|
|
|
|
Below you will find detailed descriptions on how to set up an encrypted
|
|
connection to the webinterface:
|
|
- use the plugin "encrypted_webinterface"
|
|
- run the CryptoBox webserver behind an ssl-enabled webserver
|
|
- use stunnel to provide an SSL socket
|
|
- use the a proxy server (e.g. pound)
|
|
- ...
|
|
|
|
At the end of this document you will find some information on how to turn off
|
|
SSL detection of the CryptoBox. You should read it, if there is no solution
|
|
for your specific setup available or if you are _very_ sure, that you do not
|
|
need encrypted http connections.
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
1) using the plugin 'encrypted_webinterface'
|
|
This plugin is disabled by default. You can enable it in your
|
|
cryptobox.conf file by removing it from the 'DisabledPlugins' setting.
|
|
|
|
The plugin does the following during startup of the CryptoBox:
|
|
- create a self-signed X.509 certificate if necessary
|
|
- run stunnel on port 443 (https) with this certificate
|
|
|
|
Now you just need to point your browser to the URL of the CryptoBox with
|
|
'https' instead of 'http' and to accept the certificate permanently
|
|
(the Internet Explorer is not capable of doing this - use Firefox,
|
|
Konqueror, Safari, ... instead, if you need this ability). That's it!
|
|
|
|
Of course, this will not work, if the port 443 is already in use by
|
|
another program - in this case, you should better choose one of the
|
|
other solutions described below.
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
2) CryptoBox behind an ssl-enabled webserver
|
|
Read the documentation of your favourite webserver to learn how to enable
|
|
ssl encryption.
|
|
|
|
The CryptoBox webserver cannot detect whether the connection is encrypted
|
|
or not since it is behind the proxy webserver and does not share its
|
|
environment. Thus you have to tell the CryptoBox in the request header
|
|
whether the connection is encrypted or not.
|
|
|
|
for apache2:
|
|
1) enable the 'headers' module (for debian: "a2enmod headers")
|
|
2) add this line to your ssl-enabled virtualhost:
|
|
RequestHeader set X-SSL-Request 1
|
|
3) restart your webserver
|
|
|
|
for lighthttpd:
|
|
TODO
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
3) CryptoBox behind stunnel (configured manually)
|
|
You may want to tunnel the traffic between the cryptobox-server
|
|
and your browser. "stunnel" is an excellent candidate for this job.
|
|
|
|
If you do not have an ssl certificate yet, then you should create
|
|
one first. On Debian: "apt-get install ssl-cert" and run the following
|
|
command (the supplied example openssl.conf file resides in the doc
|
|
directory of the cryptobox-server package):
|
|
|
|
make-ssl-cert conf-examples/openssl.conf <CERT_FILE_NAME>
|
|
|
|
In case, that you already have a certificate just run this command:
|
|
|
|
stunnel -p <CERT_FILE_NAME> -r localhost:80 -d 443
|
|
|
|
And maybe you want to add the last command to your bootup scripts.
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
4) CryptoBox behind a proxy server
|
|
As there are many proxy servers around, we cannot describe all of them. As
|
|
an example, we will explain the setup of the load-balancing proxy 'pound'
|
|
(http://www.apsis.ch/pound/).
|
|
|
|
Just add the following lines to you /etc/pound/pound.cfg:
|
|
# Remove the X-SSL-Request header from incoming
|
|
# connections to prevent hackers from spoofing it
|
|
HeadRemove "X-SSL-Request"
|
|
|
|
# Add an extra header to tell the CryptoBox that
|
|
# the external connection is secure
|
|
HTTPSHeaders 0 "X-SSL-Request: 1"
|
|
|
|
This example is taken from:
|
|
http://jamesthornton.com/writing/openacs-pound.html
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
5) Problems with SSL detection?
|
|
If the CryptoBox continues to complain about the unencrypted connection, even
|
|
if it runs behind an ssl-enabled webserver or behind stunnel, then you can do
|
|
one of the following things:
|
|
- disable the plugin 'encypted_webinterface' in the cryptobox.conf file
|
|
if you do not need it
|
|
- set the request header value "X-SSL-Request" to "1" (the digit 'one')
|
|
- set the environment setting "HTTPS" to a non-empty value during the
|
|
startup of the CryptoBox webserver. Maybe
|
|
/etc/default/cryptobox-server would be the right place for this.
|
|
- let the CryptoBox webserver listen to port 443
|
|
|