<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_session_crypto.xml.meta">

<name>mod_session_crypto</name>
<description>Session encryption support</description>
<status>Experimental</status>
<sourcefile>mod_session_crypto.c</sourcefile>
<identifier>session_crypto_module</identifier>
<compatibility>Available in Apache 2.3 and later</compatibility>

<summary>
    <note type="warning"><title>Warning</title>
      <p>The session modules make use of HTTP cookies, and as such can fall
      victim to Cross Site Scripting attacks, or expose potentially private
      information to clients. Please ensure that the relevant risks have
      been taken into account before enabling the session functionality on
      your server.</p>
    </note>

    <p>This submodule of <module>mod_session</module> provides support for the
    encryption of user sessions before being written to a local database, or
    written to a remote browser via an HTTP cookie.</p>

    <p>This can help provide privacy to user sessions where the contents of
    the session should be kept private from the user, or where protection is
    needed against the effects of cross site scripting attacks.</p>

    <p>For more details on the session interface, see the documentation for
    the <module>mod_session</module> module.</p>

</summary>
<seealso><module>mod_session</module></seealso>
<seealso><module>mod_session_cookie</module></seealso>
<seealso><module>mod_session_dbd</module></seealso>

    <section id="basicusage"><title>Basic Usage</title>

      <p>To create a simple encrypted session and store it in a cookie called
      <var>session</var>, configure the session as follows:</p>

      <example><title>Browser based encrypted session</title>
      <highlight language="config">
Session On
SessionCookieName session path=/
SessionCryptoPassphrase secret
    </highlight>
      </example>

      <p>The session will be encrypted with the given key. Different servers can
      be configured to share sessions by ensuring the same encryption key is used
      on each server.</p>

      <p>If the encryption key is changed, sessions will be invalidated
      automatically.</p>

      <p>For documentation on how the session can be used to store username
      and password details, see the <module>mod_auth_form</module> module.</p>

    </section>

<directivesynopsis>
<name>SessionCryptoDriver</name>
<description>The crypto driver to be used to encrypt the session</description>
<syntax>SessionCryptoDriver <var>name</var> <var>[param[=value]]</var></syntax>
<default>none</default>
<contextlist><context>server config</context>
</contextlist>
<compatibility>Available in Apache 2.3.0 and later</compatibility>

<usage>
    <p>The <directive>SessionCryptoDriver</directive> directive specifies the name of
    the crypto driver to be used for encryption. If not specified, the driver defaults
    to the recommended driver compiled into APR-util.</p>

    <p>The <var>NSS</var> crypto driver requires some parameters for configuration,
    which are specified as parameters with optional values after the driver name.</p>

    <example><title>NSS without a certificate database</title>
    <highlight language="config">
      SessionCryptoDriver nss
      </highlight>
    </example>

    <example><title>NSS with certificate database</title>
    <highlight language="config">
      SessionCryptoDriver nss dir=certs
      </highlight>
    </example>

    <example><title>NSS with certificate database and parameters</title>
    <highlight language="config">
      SessionCryptoDriver nss dir=certs key3=key3.db cert7=cert7.db secmod=secmod
      </highlight>
    </example>

    <example><title>NSS with paths containing spaces</title>
    <highlight language="config">
      SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod
      </highlight>
    </example>

    <p>The <var>NSS</var> crypto driver might have already been
    configured by another part of the server, for example from
    <code>mod_nss</code> or <module>mod_ldap</module>. If found to
    have already been configured, a warning will be logged, and the
    existing configuration will have taken affect.  To avoid this
    warning, use the noinit parameter as follows.</p>

    <example><title>NSS with certificate database</title>
    <highlight language="config">
      SessionCryptoDriver nss noinit
      </highlight>
    </example>

    <p>To prevent confusion, ensure that all modules requiring NSS are configured with
    identical parameters.</p>

    <p>The <var>openssl</var> crypto driver supports an optional parameter to specify
    the engine to be used for encryption.</p>

    <example><title>OpenSSL with engine support</title>
    <highlight language="config">
      SessionCryptoDriver openssl engine=name
      </highlight>
    </example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>SessionCryptoPassphrase</name>
<description>The key used to encrypt the session</description>
<syntax>SessionCryptoPassphrase <var>secret</var> [ <var>secret</var> ... ] </syntax>
<default>none</default>
<contextlist><context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache 2.3.0 and later</compatibility>

<usage>
    <p>The <directive>SessionCryptoPassphrase</directive> directive specifies the keys
    to be used to enable symmetrical encryption on the contents of the session before
    writing the session, or decrypting the contents of the session after reading the
    session.</p>

    <p>Keys are more secure when they are long, and consist of truly random characters.
    Changing the key on a server has the effect of invalidating all existing sessions.</p>

    <p>Multiple keys can be specified in order to support key rotation. The first key
    listed will be used for encryption, while all keys listed will be attempted for
    decryption. To rotate keys across multiple servers over a period of time, add a new
    secret to the end of the list, and once rolled out completely to all servers, remove
    the first key from the start of the list.</p>

    <p>As of version 2.4.7 if the value begins with <var>exec:</var> the resulting command
    will be executed and the first line returned to standard output by the program will be
    used as the key.</p>
<example>
    <highlight language="config">
#key used as-is
SessionCryptoPassphrase secret

#Run /path/to/program to get key
SessionCryptoPassphrase exec:/path/to/program

#Run /path/to/otherProgram and provide arguments
SessionCryptoPassphrase "exec:/path/to/otherProgram argument1"
    </highlight>
</example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>SessionCryptoPassphraseFile</name>
<description>File containing keys used to encrypt the session</description>
<syntax>SessionCryptoPassphraseFile <var>filename</var></syntax>
<default>none</default>
<contextlist><context>server config</context>
<context>virtual host</context>
<context>directory</context>
</contextlist>
<compatibility>Available in Apache 2.3.0 and later</compatibility>

<usage>
    <p>The <directive>SessionCryptoPassphraseFile</directive> directive specifies the
    name of a configuration file containing the keys to use for encrypting or decrypting
    the session, specified one per line. The file is read on server start, and a graceful
    restart will be necessary for httpd to pick up changes to the keys.</p>

    <p>Unlike the <directive module="mod_session_crypto">SessionCryptoPassphrase</directive> directive, the keys are
    not exposed within the httpd configuration and can be hidden by protecting the file
    appropriately.</p>

    <p>Multiple keys can be specified in order to support key rotation. The first key
    listed will be used for encryption, while all keys listed will be attempted for
    decryption. To rotate keys across multiple servers over a period of time, add a new
    secret to the end of the list, and once rolled out completely to all servers, remove
    the first key from the start of the list.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>SessionCryptoCipher</name>
<description>The crypto cipher to be used to encrypt the session</description>
<syntax>SessionCryptoCipher <var>name</var></syntax>
<default>SessionCryptoCipher aes256</default>
<contextlist><context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache 2.3.0 and later</compatibility>

<usage>
    <p>The <directive>SessionCryptoCipher</directive> directive allows the cipher to
    be used during encryption. If not specified, the cipher defaults to
    <code>aes256</code>.</p>

    <p>Possible values depend on the crypto driver in use, and could be one of:</p>

    <ul><li>3des192</li><li>aes128</li><li>aes192</li><li>aes256</li></ul>

</usage>
</directivesynopsis>

</modulesynopsis>
