84N/A This Apache module provides strong cryptography for the Apache 2 webserver
84N/A via the Secure Sockets Layer (SSL
v2/v3) and Transport Layer Security (TLS
84N/A v1) protocols by the help of the
SSL/TLS implementation library OpenSSL which
84N/A is based on SSLeay from Eric A. Young and Tim J. Hudson.
84N/A The mod_ssl package was created in April 1998 by Ralf S. Engelschall
84N/A and was originally derived from software developed by Ben Laurie for
84N/A use in the Apache-SSL HTTP server project. The mod_ssl implementation
84N/A for Apache 1.3 continues to be supported by the modssl project
84N/A See the top-level LAYOUT file for file descriptions.
84N/A The source files are written in clean ANSI C and pass the ``gcc -O -g
84N/A -ggdb3 -Wall -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes
873N/A -Wmissing-declarations -Wnested-externs -Winline'' compiler test
84N/A (assuming `gcc' is GCC 2.95.2 or newer) without any complains. When
84N/A you make changes or additions make sure the source still passes this
84N/A Inside the source code you will be confronted with the following types of
84N/A functions which can be identified by their prefixes:
828N/A ap_xxxx() ............... Apache API function
84N/A ssl_xxxx() .............. mod_ssl function
84N/A SSL_xxxx() .............. OpenSSL function (SSL library)
623N/A OpenSSL_xxxx() .......... OpenSSL function (SSL library)
84N/A X509_xxxx() ............. OpenSSL function (Crypto library)
84N/A PEM_xxxx() .............. OpenSSL function (Crypto library)
84N/A EVP_xxxx() .............. OpenSSL function (Crypto library)
84N/A RSA_xxxx() .............. OpenSSL function (Crypto library)
84N/A Inside the source code you will be confronted with the following
968N/A server_rec .............. Apache (Virtual) Server
968N/A conn_rec ................ Apache Connection
623N/A request_rec ............. Apache Request
623N/A SSLModConfig ............ mod_ssl (Global) Module Configuration
623N/A SSLSrvConfig ............ mod_ssl (Virtual) Server Configuration
623N/A SSLDirConfig ............ mod_ssl Directory Configuration
84N/A SSLConnConfig ........... mod_ssl Connection Configuration
1186N/A SSLFilterRec ............ mod_ssl Filter Context
84N/A SSL_CTX ................. OpenSSL Context
84N/A SSL_METHOD .............. OpenSSL Protocol Method
1186N/A SSL_CIPHER .............. OpenSSL Cipher
1186N/A SSL_SESSION ............. OpenSSL Session
1186N/A SSL ..................... OpenSSL Connection
1186N/A BIO ..................... OpenSSL Connection Buffer
84N/A For an overview how these are related and chained together have a look at the
84N/A structures. It's designed for DIN A4 paper size, but you can easily generate
481N/A a smaller version inside XFig by specifing a magnification on the Export
1186N/A The following intentional incompatibilities exist between mod_ssl
2.x 828N/A from Apache 1.3 and this mod_ssl version for Apache 2:
828N/A o The complete EAPI-based SSL_VENDOR stuff was removed.
828N/A o The complete EAPI-based SSL_COMPAT stuff was removed.
828N/A o The <IfDefine> variable MOD_SSL is no longer provided automatically
623N/A For a complete history of changes for Apache 2 mod_ssl, see the
828N/A CHANGES file in the top-level directory. The following
84N/A is a condensed summary of the major changes were made between
84N/A mod_ssl
2.x from Apache 1.3 and this mod_ssl version for Apache 2:
o The DBM based session cache is now based on APR's DBM API only.
o The shared memory based session cache is now based on APR's APIs.
o SSL I/O is now implemented in terms of filters rather than BUFF
o Eliminated ap_global_ctx. Storing Persistant information in
process_rec->pool->user_data. The ssl_pphrase_Handle_CB() and
ssl_config_global_* () functions have an extra parameter now -
"server_rec *" - which is used to retrieve the SSLModConfigRec.
o Properly support restarts, allowing mod_ssl to be added to a server
that is already running and to change server
certs/keys on restart
o Various performance enhancements
o proxy support is no longer an "extension", much of the mod_ssl core
was re-written (ssl_engine_{init,kernel,config}.c) to be generic so
it could be re-used in proxy mode.
- the optional function ssl_proxy_enable is provide for mod_proxy
- proxy support now requires 'SSLProxyEngine on' to be configured
- proxy now supports SSLProxyCARevocation{Path,File} in addition to
the original SSLProxy* directives
o per-directory SSLCACertificate{File,Path} is now thread-safe but
requires SSL_set_cert_store patch to OpenSSL
o the ssl_engine_{ds,ext}.c source files are obsolete and no longer
See the top-level STATUS file for current efforts and goals.