summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbeck <beck@openbsd.org>1999-12-08 02:45:48 +0000
committerbeck <beck@openbsd.org>1999-12-08 02:45:48 +0000
commit69fe16e6f86413aa00dca3a3ae2292edea53059f (patch)
tree9f81d76784a617777075a3bf694aaa8e6e580ba2
parentAH finished, a couple of cosmetic changes in ESP. (diff)
downloadwireguard-openbsd-69fe16e6f86413aa00dca3a3ae2292edea53059f.tar.xz
wireguard-openbsd-69fe16e6f86413aa00dca3a3ae2292edea53059f.zip
mod_ssl 2.4.9 merge
-rw-r--r--usr.sbin/httpd/INSTALL.SSL17
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html136
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml20
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html103
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.wml103
-rw-r--r--usr.sbin/httpd/src/CHANGES.SSL84
-rw-r--r--usr.sbin/httpd/src/modules/ssl/libssl.version2
-rw-r--r--usr.sbin/httpd/src/modules/ssl/mod_ssl.h13
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c4
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c8
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c52
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_log.c5
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_pphrase.c17
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c10
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c15
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_expr_eval.c39
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c9
17 files changed, 434 insertions, 203 deletions
diff --git a/usr.sbin/httpd/INSTALL.SSL b/usr.sbin/httpd/INSTALL.SSL
index 39e845aed37..2e55ce7d4d7 100644
--- a/usr.sbin/httpd/INSTALL.SSL
+++ b/usr.sbin/httpd/INSTALL.SSL
@@ -63,9 +63,7 @@
Description: RSA Reference Implementation
Reason: Deprecated RSA library for US citizens
Homepage: -
- Distribution: ftp://ftp.replay.com/pub/crypto/crypto/LIBS/rsa/
- ftp://utopia.hacktic.nl/pub/replay/pub/crypto/LIBS/rsa/
- Or ask http://ftpsearch.lycos.com/ for "rsaref20.tar.Z" !!
+ Distribution: Search on http://ftpsearch.lycos.com/ for "rsaref20.tar.Z" !!
Tarball: rsaref20.tar.Z
Location: Netherlands (because no longer distributed by RSA DSI)
Author(s): RSA DSI
@@ -176,10 +174,11 @@
$ cd .. ALL
NOTE: OpenSSL understands a lot more options on the `config'
- command line. For instance you can add some command line options
- (like `-DSSL_FORBID_ENULL' for not allowing Null encryptions, etc)
- to adjust the OpenSSL internals (see OpenSSL's top-level Makefile
- for details).
+ command line. For instance you can add some command line
+ options (like `-DSSL_FORBID_ENULL' for not allowing Null
+ encryptions, or adding `-DSSL_ALLOW_ADH' for allowing
+ Anonymous Diffie-Hellman ciphers, etc) to adjust the OpenSSL
+ internals (see OpenSSL's top-level Makefile for details).
NOTE: When your system already has OpenSSL installed (for instance some
Linux distributions ship with OpenSSL installed out-of-the-box) in
@@ -271,7 +270,7 @@
When this is the case for you, then try to recompile OpenSSL
with Position Independent Code (PIC) by adding a `-fPIC' (for
GCC) or `-KPIC' (for SVR4-style compilers) to the platform
- configuration line in OpenSSL's `Configure' script. The the
+ configuration line in OpenSSL's `Configure' script. The
-fPIC option above when you build OpenSSL.
NOTE: The --disable-rule=SSL_COMPAT option disables the building of
@@ -349,7 +348,7 @@
When this is the case for you, then try to recompile OpenSSL
with Position Independent Code (PIC) by adding a `-fPIC' (for
GCC) or `-KPIC' (for SVR4-style compilers) to the platform
- configuration line in OpenSSL's `Configure' script. The the
+ configuration line in OpenSSL's `Configure' script. The
-fPIC option above when you build OpenSSL.
NOTE: The --disable-rule=SSL_COMPAT option disables the building of
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html
index 7d08eb79059..aa17eb4b275 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html
@@ -289,41 +289,42 @@ author.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC9"><strong>Core dumps for Apache+mod_ssl+PHP3?</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC10"><strong>Undefined symbols on startup?</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC11"><strong>Permission problem on SSLMutex</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC12"><strong>shared memory and process size?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC12"><strong>Shared memory and process size?</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC13"><strong>About Configuration</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC14"><strong>HTTP and HTTPS with a single server?</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC15"><strong>Where is the HTTPS port?</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC16"><strong>How to test HTTPS manually?</strong></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC17"><strong>Why does my connection hang?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC18"><strong>How to switch with relative hyperlinks?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC19"><strong>About Certificates</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC20"><strong>What are Keys, CSRs and Certs?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC21"><strong>Difference on startup?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC22"><strong>How to create a dummy cert?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC23"><strong>How to create a real cert?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC24"><strong>How to create my own CA?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC25"><strong>How to change a pass phrase?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC26"><strong>How to remove a pass phrase?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC27"><strong>How to verify a key/cert pair?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC28"><strong>Bad Certificate Error?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC29"><strong>Why does a 2048-bit key not work?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC30"><strong>Why is client auth broken?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC31"><strong>How to convert from PEM to DER?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC32"><strong>Verisign and the magic getca program?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC33"><strong>Global IDs or SGC?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC34"><strong>About SSL Protocol</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC35"><strong>Why has the server a higher load?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC36"><strong>Which ciphers are supported?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC37"><strong>HTTPS and name-based vhosts</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC38"><strong>The lock icon in Netscape locks very late</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC39"><strong>Why do I get I/O errors with my MSIE clients?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC40"><strong>Why do I get I/O errors with my NS clients?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC41"><strong>About Support</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC42"><strong>Resources in case of problems?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC43"><strong>Support in case of problems?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC44"><strong>How to write a problem report?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC45"><strong>I got a core dump, can you help me?</strong></a><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC46"><strong>How to get a backtrace?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC18"><strong>Why do I get connection refused?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC19"><strong>How to switch with relative hyperlinks?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC20"><strong>About Certificates</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC21"><strong>What are Keys, CSRs and Certs?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC22"><strong>Difference on startup?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC23"><strong>How to create a dummy cert?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC24"><strong>How to create a real cert?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC25"><strong>How to create my own CA?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC26"><strong>How to change a pass phrase?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC27"><strong>How to remove a pass phrase?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC28"><strong>How to verify a key/cert pair?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC29"><strong>Bad Certificate Error?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC30"><strong>Why does a 2048-bit key not work?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC31"><strong>Why is client auth broken?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC32"><strong>How to convert from PEM to DER?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC33"><strong>Verisign and the magic getca program?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC34"><strong>Global IDs or SGC?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC35"><strong>About SSL Protocol</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC36"><strong>Why has the server a higher load?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC37"><strong>Which ciphers are supported?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC38"><strong>HTTPS and name-based vhosts</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC39"><strong>The lock icon in Netscape locks very late</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC40"><strong>Why do I get I/O errors with my MSIE clients?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC41"><strong>Why do I get I/O errors with my NS clients?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC42"><strong>About Support</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC43"><strong>Resources in case of problems?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC44"><strong>Support in case of problems?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC45"><strong>How to write a problem report?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC46"><strong>I got a core dump, can you help me?</strong></a><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ToC47"><strong>How to get a backtrace?</strong></a><br>
</font>
</td>
</tr>
@@ -501,8 +502,8 @@ it is originally derived?</strong>&nbsp;&nbsp;
a buggy mod_ssl version. But the above situation is often caused by old or
broken vendor DBM libraries. To solve it either build mod_ssl with the
built-in SDBM library (specify <tt>--enable-rule=SSL_SDBM</tt> at the
- APACI command line) or switch from ``<tt>SSLSessioCache dbm:</tt>'' to the
- newer ``<tt>SSLSessioCache shm:</tt>'' variant (after you've rebuilt
+ APACI command line) or switch from ``<tt>SSLSessionCache dbm:</tt>'' to the
+ newer ``<tt>SSLSessionCache shm:</tt>'' variant (after you've rebuilt
Apache with MM, of course).
<p>
<li><a name="ToC9"></a>
@@ -627,6 +628,21 @@ it is originally derived?</strong>&nbsp;&nbsp;
your hostname, not localhost (127.0.0.1).
<p>
<li><a name="ToC18"></a>
+ <a name="hang"></a>
+ <strong id="faq">Why do I get ``Connection Refused'' messages when trying to access my freshly
+installed Apache+mod_ssl server via HTTPS?</strong>&nbsp;&nbsp;
+ [<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#hang"><b>L</b></a>]
+ <p>
+ There can be various reasons. Some of the common mistakes is that people
+ start Apache with just ``<tt>apachectl start</tt>'' (or
+ ``<tt>httpd</tt>'') instead of ``<tt>apachectl startssl</tt>'' (or
+ ``<tt>httpd -DSSL</tt>''. Or you're configuration is not correct. At
+ least make sure that your ``<tt>Listen</tt>'' directives match your
+ ``<tt>&lt;VirtualHost&gt;</tt>'' directives. And if all fails, please do
+ yourself a favor and start over with the default configuration mod_ssl
+ provides you.
+<p>
+<li><a name="ToC19"></a>
<a name="relative-links"></a>
<strong id="faq">How can I use relative hyperlinks to switch between HTTP and HTTPS?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#relative-links"><b>L</b></a>]
@@ -647,10 +663,10 @@ it is originally derived?</strong>&nbsp;&nbsp;
</ul>
<p>
<br>
-<H2><a name="ToC19">About Certificates</a></H2>
+<H2><a name="ToC20">About Certificates</a></H2>
<ul>
<p>
-<li><a name="ToC20"></a>
+<li><a name="ToC21"></a>
<a name="what-is"></a>
<strong id="faq">What are RSA Private Keys, CSRs and Certificates?</strong></strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#what-is"><b>L</b></a>]
@@ -668,7 +684,7 @@ it is originally derived?</strong>&nbsp;&nbsp;
See the <a href="ssl_intro.html">Introduction</a> chapter for a general
description of the SSL protocol.
<p>
-<li><a name="ToC21"></a>
+<li><a name="ToC22"></a>
<a name="startup"></a>
<strong id="faq">Seems like there is a difference on startup between the original Apache and an SSL-aware Apache?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#startup"><b>L</b></a>]
@@ -684,7 +700,7 @@ it is originally derived?</strong>&nbsp;&nbsp;
below under ``How can I get rid of the pass-phrase dialog at Apache
startup time?''.
<p>
-<li><a name="ToC22"></a>
+<li><a name="ToC23"></a>
<a name="cert-dummy"></a>
<strong id="faq">How can I create a dummy SSL server Certificate for testing purposes?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#cert-dummy"><b>L</b></a>]
@@ -706,7 +722,7 @@ it is originally derived?</strong>&nbsp;&nbsp;
BUT REMEMBER: YOU REALLY HAVE TO CREATE A REAL CERTIFICATE FOR THE LONG
RUN! HOW THIS IS DONE IS DESCRIBED IN THE NEXT ANSWER.
<p>
-<li><a name="ToC23"></a>
+<li><a name="ToC24"></a>
<a name="cert-real"></a>
<strong id="faq">Ok, I've got my server installed and want to create a real SSL
server Certificate for it. How do I do it?</strong>&nbsp;&nbsp;
@@ -802,7 +818,7 @@ server Certificate for it. How do I do it?</strong>&nbsp;&nbsp;
The <code>server.csr</code> file is no longer needed.
</ol>
<p>
-<li><a name="ToC24"></a>
+<li><a name="ToC25"></a>
<a name="cert-ownca"></a>
<strong id="faq">How can I create and use my own Certificate Authority (CA)?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#cert-ownca"><b>L</b></a>]
@@ -852,7 +868,7 @@ server Certificate for it. How do I do it?</strong>&nbsp;&nbsp;
This signs the server CSR and results in a <code>server.crt</code> file.
</ol>
<p>
-<li><a name="ToC25"></a>
+<li><a name="ToC26"></a>
<a name="change-passphrase"></a>
<strong id="faq">How can I change the pass-phrase on my private key file?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#change-passphrase"><b>L</b></a>]
@@ -868,7 +884,7 @@ server Certificate for it. How do I do it?</strong>&nbsp;&nbsp;
prompt enter the old pass-phrase and at the second prompt
enter the new pass-phrase.
<p>
-<li><a name="ToC26"></a>
+<li><a name="ToC27"></a>
<a name="remove-passphrase"></a>
<strong id="faq">How can I get rid of the pass-phrase dialog at Apache startup time?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#remove-passphrase"><b>L</b></a>]
@@ -903,7 +919,7 @@ server Certificate for it. How do I do it?</strong>&nbsp;&nbsp;
exec:/path/to/program</code>'' facility. But keep in mind that this is
neither more nor less secure, of course.
<p>
-<li><a name="ToC27"></a>
+<li><a name="ToC28"></a>
<a name="verify-key"></a>
<strong id="faq">How do I verify that a private key matches its Certificate?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#verify-key"><b>L</b></a>]
@@ -933,7 +949,7 @@ server Certificate for it. How do I do it?</strong>&nbsp;&nbsp;
<p>
<code><strong>$ openssl req -noout -modulus -in server.csr | openssl md5</strong></code>
<p>
-<li><a name="ToC28"></a>
+<li><a name="ToC29"></a>
<a name="keysize1"></a>
<strong id="faq">What does it mean when my connections fail with an "alert bad certificate"
error?</strong>&nbsp;&nbsp;
@@ -945,7 +961,7 @@ error?</strong>&nbsp;&nbsp;
certificate/private-key which perhaps contain a RSA-key not equal to 1024
bits. For instance Netscape Navigator 3.x is one of those browsers.
<p>
-<li><a name="ToC29"></a>
+<li><a name="ToC30"></a>
<a name="keysize2"></a>
<strong id="faq">Why does my 2048-bit private key not work?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#keysize2"><b>L</b></a>]
@@ -956,7 +972,7 @@ error?</strong>&nbsp;&nbsp;
Navigator and Microsoft Internet Explorer, and with other browsers that
use RSA's BSAFE cryptography toolkit.
<p>
-<li><a name="ToC30"></a>
+<li><a name="ToC31"></a>
<a name="hash-symlinks"></a>
<strong id="faq">Why is client authentication broken after upgrading from
SSLeay version 0.8 to 0.9?</strong>&nbsp;&nbsp;
@@ -970,7 +986,7 @@ SSLeay version 0.8 to 0.9?</strong>&nbsp;&nbsp;
all old hash symlinks and re-create new ones after upgrading. Use the
<code>Makefile</code> mod_ssl placed into this directory.
<p>
-<li><a name="ToC31"></a>
+<li><a name="ToC32"></a>
<a name="pem-to-der"></a>
<strong id="faq">How can I convert a certificate from PEM to DER format?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#pem-to-der"><b>L</b></a>]
@@ -982,7 +998,7 @@ SSLeay version 0.8 to 0.9?</strong>&nbsp;&nbsp;
corresponding DER file <code>cert.der</code> with the following command:
<code><strong>$ openssl x509 -in cert.pem -out cert.der -outform DER</strong></code>
<p>
-<li><a name="ToC32"></a>
+<li><a name="ToC33"></a>
<a name="verisign-getca"></a>
<strong id="faq">I try to install a Verisign certificate. Why can't I find neither the
<code>getca</code> nor <code>getverisign</code> programs Verisign mentions?</strong>&nbsp;&nbsp;
@@ -1000,7 +1016,7 @@ SSLeay version 0.8 to 0.9?</strong>&nbsp;&nbsp;
href="http://www.thawte.com/certs/server/keygen/mod_ssl.html">
Thawte's mod_ssl instructions</a>.
<p>
-<li><a name="ToC33"></a>
+<li><a name="ToC34"></a>
<a name="gid"></a>
<strong id="faq">Can I use the Server Gated Cryptography (SGC) facility (aka Verisign Global
ID) also with mod_ssl?</strong>&nbsp;&nbsp;
@@ -1014,10 +1030,10 @@ ID) also with mod_ssl?</strong>&nbsp;&nbsp;
</ul>
<p>
<br>
-<H2><a name="ToC34">About SSL Protocol</a></H2>
+<H2><a name="ToC35">About SSL Protocol</a></H2>
<ul>
<p>
-<li><a name="ToC35"></a>
+<li><a name="ToC36"></a>
<a name="load"></a>
<strong id="faq">Why has my webserver a higher load now that I run SSL there?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#load"><b>L</b></a>]
@@ -1027,7 +1043,7 @@ ID) also with mod_ssl?</strong>&nbsp;&nbsp;
the images are transfered encrypted. So, when you have a lot of HTTPS
traffic the load increases.
<p>
-<li><a name="ToC36"></a>
+<li><a name="ToC37"></a>
<a name="ciphers"></a>
<strong id="faq">What SSL Ciphers are supported by mod_ssl?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#ciphers"><b>L</b></a>]
@@ -1051,7 +1067,7 @@ ID) also with mod_ssl?</strong>&nbsp;&nbsp;
<p>
<code><strong>$ openssl ciphers -v</strong></code><br>
<p>
-<li><a name="ToC37"></a>
+<li><a name="ToC38"></a>
<a name="vhosts"></a>
<strong id="faq">Why can't I use SSL with name-based/non-IP-based virtual hosts?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#vhosts"><b>L</b></a>]
@@ -1068,7 +1084,7 @@ ID) also with mod_ssl?</strong>&nbsp;&nbsp;
handshake is finished. But the information is already needed at the SSL
handshake phase. Bingo!
<p>
-<li><a name="ToC38"></a>
+<li><a name="ToC39"></a>
<a name="lock-icon"></a>
<strong id="faq">When I use Basic Authentication over HTTPS the lock icon in Netscape browsers
still show the unlocked state when the dialog pops up. Does this mean the
@@ -1085,7 +1101,7 @@ username/password is still transmitted unencrypted?</strong>&nbsp;&nbsp;
handshake phase and switched to encrypted communication. So, don't get
confused by this icon.
<p>
-<li><a name="ToC39"></a>
+<li><a name="ToC40"></a>
<a name="io-ie"></a>
<strong id="faq">When I connect via HTTPS to an Apache+mod_ssl server with Microsoft Internet
Explorer (MSIE) I sometimes get I/O errors and the message "bad data from the
@@ -1102,7 +1118,7 @@ server". What's the reason?</strong>&nbsp;&nbsp;
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</pre>
<p>
-<li><a name="ToC40"></a>
+<li><a name="ToC41"></a>
<a name="io-ns"></a>
<strong id="faq">When I connect via HTTPS to an Apache+mod_ssl server with Netscape Navigator I
get I/O errors and the message "Netscape has encountered bad data from the
@@ -1118,10 +1134,10 @@ server" What's the reason?</strong>&nbsp;&nbsp;
</ul>
<p>
<br>
-<H2><a name="ToC41">About Support</a></H2>
+<H2><a name="ToC42">About Support</a></H2>
<ul>
<p>
-<li><a name="ToC42"></a>
+<li><a name="ToC43"></a>
<a name="resources"></a>
<strong id="faq">What information resources are available in case of mod_ssl problems?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#resources"><b>L</b></a>]
@@ -1150,7 +1166,7 @@ In case of problems you should search here first.
someone else already has reported the problem.
</ol>
<p>
-<li><a name="ToC43"></a>
+<li><a name="ToC44"></a>
<a name="contact"></a>
<strong id="faq">What support contacts are available in case of mod_ssl problems?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#contact"><b>L</b></a>]
@@ -1184,7 +1200,7 @@ you just like most, please.
usually not processed as fast as a posting on modssl-users.
</ol>
<p>
-<li><a name="ToC44"></a>
+<li><a name="ToC45"></a>
<a name="report-details"></a>
<strong id="faq">What information and details I've to provide to
the author when writing a bug report?</strong>&nbsp;&nbsp;
@@ -1222,7 +1238,7 @@ You have to at least always provide the following information:
course.
</ul>
<p>
-<li><a name="ToC45"></a>
+<li><a name="ToC46"></a>
<a name="core-dumped"></a>
<strong id="faq">I got a core dump, can you help me?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#core-dumped"><b>L</b></a>]
@@ -1233,7 +1249,7 @@ You have to at least always provide the following information:
information it is mostly impossible to find the problem and help you in
fixing it.
<p>
-<li><a name="ToC46"></a>
+<li><a name="ToC47"></a>
<a name="report-backtrace"></a>
<strong id="faq">Ok, I got a core dump but how do I get a backtrace to find out the reason for it?</strong>&nbsp;&nbsp;
[<a href="http://www.modssl.org/docs/2.4/ssl_faq.html#report-backtrace"><b>L</b></a>]
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml
index c99863e4017..899faa40162 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml
@@ -250,8 +250,8 @@ When I access my website the first time via HTTPS I get a core dump?
a buggy mod_ssl version. But the above situation is often caused by old or
broken vendor DBM libraries. To solve it either build mod_ssl with the
built-in SDBM library (specify <tt>--enable-rule=SSL_SDBM</tt> at the
- APACI command line) or switch from ``<tt>SSLSessioCache dbm:</tt>'' to the
- newer ``<tt>SSLSessioCache shm:</tt>'' variant (after you've rebuilt
+ APACI command line) or switch from ``<tt>SSLSessionCache dbm:</tt>'' to the
+ newer ``<tt>SSLSessionCache shm:</tt>'' variant (after you've rebuilt
Apache with MM, of course).
<faq ref="core-php3" toc="Core dumps for Apache+mod_ssl+PHP3?">
@@ -287,7 +287,7 @@ When I startup Apache I get permission errors related to SSLMutex?
set at least for the UID under which Apache's children are running (see
the <code>User</code> directive of Apache).
-<faq ref="mm" toc="shared memory and process size?">
+<faq ref="mm" toc="Shared memory and process size?">
When I use the MM library and the shared memory cache each process grows
1.5MB according to `top' although I specified 512000 as the cache size?
</faq>
@@ -370,6 +370,20 @@ Why does the connection hang when I connect to my SSL-aware Apache server?
virtual server that supports SSL, which is probably the IP associated with
your hostname, not localhost (127.0.0.1).
+<faq ref="hang" toc="Why do I get connection refused?">
+Why do I get ``Connection Refused'' messages when trying to access my freshly
+installed Apache+mod_ssl server via HTTPS?
+</faq>
+
+ There can be various reasons. Some of the common mistakes is that people
+ start Apache with just ``<tt>apachectl start</tt>'' (or
+ ``<tt>httpd</tt>'') instead of ``<tt>apachectl startssl</tt>'' (or
+ ``<tt>httpd -DSSL</tt>''. Or you're configuration is not correct. At
+ least make sure that your ``<tt>Listen</tt>'' directives match your
+ ``<tt>&lt;VirtualHost&gt;</tt>'' directives. And if all fails, please do
+ yourself a favor and start over with the default configuration mod_ssl
+ provides you.
+
<faq ref="relative-links" toc="How to switch with relative hyperlinks?">
How can I use relative hyperlinks to switch between HTTP and HTTPS?
</faq>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html
index 9ca35b63905..1633b75fd98 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html
@@ -412,12 +412,14 @@ which can be configured by <em>type</em>:
<li><code>exec:/path/to/program</code>
<p>
Here an external program is configured which is called at startup for each
- encrypted Private Key file. It is called with an argument of
- ``<code>servername:portnumber</code>'' for which it has to print the
- corresponding Pass Phrase to <code>stdout</code>. The intent is that this
- external program first runs security checks to make sure that the system
- is not compromised by an attacker, and only when these checks were passed
- successfully it provides the Pass Phrase.
+ encrypted Private Key file. It is called with two arguments (the first is
+ of the form ``<code>servername:portnumber</code>'', the second is either
+ ``<code>RSA</code>'' or ``<code>DSA</code>''), which indicate for which
+ server and algorithm it has to print the corresponding Pass Phrase to
+ <code>stdout</code>. The intent is that this external program first runs
+ security checks to make sure that the system is not compromised by an
+ attacker, and only when these checks were passed successfully it provides
+ the Pass Phrase.
<p>
Both these security checks, and the way the Pass Phrase is determined, can
be as complex as you like. Mod_ssl just defines the interface: an
@@ -2014,13 +2016,15 @@ The available <em>option</em>s are:
<p>
<li><code>ExportCertData</code>
<p>
- When this option is enabled, two additional CGI/SSI environment variables
- are created: <code>SSL_CLIENT_CERT</code> and
- <code>SSL_SERVER_CERT</code>. These contain the PEM-encoded X.509
- Certificates of client and server for the current HTTPS connection and can
- be used by CGI scripts for deeper Certificate checking. This bloats up
- the environment a little bit which is why you have to use this option to
- enable it on demand.
+ When this option is enabled, additional CGI/SSI environment variables are
+ created: <code>SSL_SERVER_CERT</code>, <code>SSL_CLIENT_CERT</code> and
+ <code>SSL_CLIENT_CERT_CHAIN</code><i>n</i> (with <i>n</i> = 0,1,2,..).
+ These contain the PEM-encoded X.509 Certificates of server and client for
+ the current HTTPS connection and can be used by CGI scripts for deeper
+ Certificate checking. Additionally all other certificates of the client
+ certificate chain are provided, too. This bloats up the environment a
+ little bit which is why you have to use this option to enable it on
+ demand.
<p>
<li><code>FakeBasicAuth</code>
<p>
@@ -2272,29 +2276,31 @@ REQUEST_FILENAME
</pre>
<em>SSL-related variables:</em>
<pre>
-HTTPS SSL_CLIENT_M_VERSION SSL_SERVER_M_VERSION
- SSL_CLIENT_M_SERIAL SSL_SERVER_M_SERIAL
-SSL_PROTOCOL SSL_CLIENT_V_START SSL_SERVER_V_START
-SSL_SESSION_ID SSL_CLIENT_V_END SSL_SERVER_V_END
-SSL_CIPHER SSL_CLIENT_S_DN SSL_SERVER_S_DN
-SSL_CIPHER_ALGKEYSIZE SSL_CLIENT_S_DN_C SSL_SERVER_S_DN_C
-SSL_CIPHER_USEKEYSIZE SSL_CLIENT_S_DN_SP SSL_SERVER_S_DN_SP
-SSL_VERSION_LIBRARY SSL_CLIENT_S_DN_L SSL_SERVER_S_DN_L
-SSL_VERSION_INTERFACE SSL_CLIENT_S_DN_O SSL_SERVER_S_DN_O
- SSL_CLIENT_S_DN_OU SSL_SERVER_S_DN_OU
- SSL_CLIENT_S_DN_CN SSL_SERVER_S_DN_CN
- SSL_CLIENT_S_DN_Email SSL_SERVER_S_DN_Email
- SSL_CLIENT_I_DN SSL_SERVER_I_DN
- SSL_CLIENT_I_DN_C SSL_SERVER_I_DN_C
- SSL_CLIENT_I_DN_SP SSL_SERVER_I_DN_SP
- SSL_CLIENT_I_DN_L SSL_SERVER_I_DN_L
- SSL_CLIENT_I_DN_O SSL_SERVER_I_DN_O
- SSL_CLIENT_I_DN_OU SSL_SERVER_I_DN_OU
- SSL_CLIENT_I_DN_CN SSL_SERVER_I_DN_CN
- SSL_CLIENT_I_DN_Email SSL_SERVER_I_DN_Email
- SSL_CLIENT_A_SIG SSL_SERVER_A_SIG
- SSL_CLIENT_A_KEY SSL_SERVER_A_KEY
- SSL_CLIENT_CERT SSL_SERVER_CERT
+HTTPS SSL_CLIENT_M_VERSION SSL_SERVER_M_VERSION
+ SSL_CLIENT_M_SERIAL SSL_SERVER_M_SERIAL
+SSL_PROTOCOL SSL_CLIENT_V_START SSL_SERVER_V_START
+SSL_SESSION_ID SSL_CLIENT_V_END SSL_SERVER_V_END
+SSL_CIPHER SSL_CLIENT_S_DN SSL_SERVER_S_DN
+SSL_CIPHER_EXPORT SSL_CLIENT_S_DN_C SSL_SERVER_S_DN_C
+SSL_CIPHER_ALGKEYSIZE SSL_CLIENT_S_DN_SP SSL_SERVER_S_DN_SP
+SSL_CIPHER_USEKEYSIZE SSL_CLIENT_S_DN_L SSL_SERVER_S_DN_L
+SSL_VERSION_LIBRARY SSL_CLIENT_S_DN_O SSL_SERVER_S_DN_O
+SSL_VERSION_INTERFACE SSL_CLIENT_S_DN_OU SSL_SERVER_S_DN_OU
+ SSL_CLIENT_S_DN_CN SSL_SERVER_S_DN_CN
+ SSL_CLIENT_S_DN_Email SSL_SERVER_S_DN_Email
+ SSL_CLIENT_I_DN SSL_SERVER_I_DN
+ SSL_CLIENT_I_DN_C SSL_SERVER_I_DN_C
+ SSL_CLIENT_I_DN_SP SSL_SERVER_I_DN_SP
+ SSL_CLIENT_I_DN_L SSL_SERVER_I_DN_L
+ SSL_CLIENT_I_DN_O SSL_SERVER_I_DN_O
+ SSL_CLIENT_I_DN_OU SSL_SERVER_I_DN_OU
+ SSL_CLIENT_I_DN_CN SSL_SERVER_I_DN_CN
+ SSL_CLIENT_I_DN_Email SSL_SERVER_I_DN_Email
+ SSL_CLIENT_A_SIG SSL_SERVER_A_SIG
+ SSL_CLIENT_A_KEY SSL_SERVER_A_KEY
+ SSL_CLIENT_CERT SSL_SERVER_CERT
+ SSL_CLIENT_CERT_CHAIN<b>n</b>
+ SSL_CLIENT_VERIFY
</pre>
</td></tr></table></td>
</tr></table>
@@ -2328,6 +2334,7 @@ compatibility variables.
<tr id="H"><td><code>SSL_PROTOCOL</code></td> <td>string</td> <td>The SSL protocol version (SSLv2, SSLv3, TLSv1)</td></tr>
<tr id="H"><td><code>SSL_SESSION_ID</code></td> <td>string</td> <td>The hex-encoded SSL session id</td></tr>
<tr id="D"><td><code>SSL_CIPHER</code></td> <td>string</td> <td>The cipher specification name</td></tr>
+<tr id="D"><td><code>SSL_CIPHER_EXPORT</code></td> <td>string</td> <td><code>true</code> if cipher is an export cipher</td></tr>
<tr id="H"><td><code>SSL_CIPHER_USEKEYSIZE</code></td> <td>number</td> <td>Number of cipher bits (actually used)</td></tr>
<tr id="D"><td><code>SSL_CIPHER_ALGKEYSIZE</code></td> <td>number</td> <td>Number of cipher bits (possible)</td></tr>
<tr id="H"><td><code>SSL_VERSION_INTERFACE</code></td> <td>string</td> <td>The mod_ssl program version</td></tr>
@@ -2342,16 +2349,20 @@ compatibility variables.
<tr id="D"><td><code>SSL_CLIENT_V_END</code></td> <td>string</td> <td>Validity of client's certificate (end time)</td></tr>
<tr id="H"><td><code>SSL_CLIENT_A_SIG</code></td> <td>string</td> <td>Algorithm used for the signature of client's certificate</td></tr>
<tr id="D"><td><code>SSL_CLIENT_A_KEY</code></td> <td>string</td> <td>Algorithm used for the public key of client's certificate</td></tr>
-<tr id="H"><td><code>SSL_SERVER_M_VERSION</code></td> <td>string</td> <td>The version of the server certificate</td></tr>
-<tr id="D"><td><code>SSL_SERVER_M_SERIAL</code></td> <td>string</td> <td>The serial of the server certificate</td></tr>
-<tr id="H"><td><code>SSL_SERVER_S_DN</code></td> <td>string</td> <td>Subject DN in server's certificate</td></tr>
-<tr id="D"><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Subject DN</td></tr>
-<tr id="H"><td><code>SSL_SERVER_I_DN</code></td> <td>string</td> <td>Issuer DN of server's certificate</td></tr>
-<tr id="D"><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Issuer DN</td></tr>
-<tr id="H"><td><code>SSL_SERVER_V_START</code></td> <td>string</td> <td>Validity of server's certificate (start time)</td></tr>
-<tr id="D"><td><code>SSL_SERVER_V_END</code></td> <td>string</td> <td>Validity of server's certificate (end time)</td></tr>
-<tr id="H"><td><code>SSL_SERVER_A_SIG</code></td> <td>string</td> <td>Algorithm used for the signature of server's certificate</td></tr>
-<tr id="D"><td><code>SSL_SERVER_A_KEY</code></td> <td>string</td> <td>Algorithm used for the public key of server's certificate</td></tr>
+<tr id="H"><td><code>SSL_CLIENT_CERT</code></td> <td>string</td> <td>PEM-encoded client certificate</td></tr>
+<tr id="D"><td><code>SSL_CLIENT_CERT_CHAIN</code><i>n</i></td> <td>string</td> <td>PEM-encoded certificates in client certificate chain</td></tr>
+<tr id="H"><td><code>SSL_CLIENT_VERIFY</code></td> <td>string</td> <td><tt>NONE</tt>, <tt>SUCCESS</tt>, <tt>GENEROUS</tt> or <tt>FAILED:</tt><i>reason</i></td></tr>
+<tr id="D"><td><code>SSL_SERVER_M_VERSION</code></td> <td>string</td> <td>The version of the server certificate</td></tr>
+<tr id="H"><td><code>SSL_SERVER_M_SERIAL</code></td> <td>string</td> <td>The serial of the server certificate</td></tr>
+<tr id="D"><td><code>SSL_SERVER_S_DN</code></td> <td>string</td> <td>Subject DN in server's certificate</td></tr>
+<tr id="H"><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Subject DN</td></tr>
+<tr id="D"><td><code>SSL_SERVER_I_DN</code></td> <td>string</td> <td>Issuer DN of server's certificate</td></tr>
+<tr id="H"><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Issuer DN</td></tr>
+<tr id="D"><td><code>SSL_SERVER_V_START</code></td> <td>string</td> <td>Validity of server's certificate (start time)</td></tr>
+<tr id="H"><td><code>SSL_SERVER_V_END</code></td> <td>string</td> <td>Validity of server's certificate (end time)</td></tr>
+<tr id="D"><td><code>SSL_SERVER_A_SIG</code></td> <td>string</td> <td>Algorithm used for the signature of server's certificate</td></tr>
+<tr id="H"><td><code>SSL_SERVER_A_KEY</code></td> <td>string</td> <td>Algorithm used for the public key of server's certificate</td></tr>
+<tr id="D"><td><code>SSL_SERVER_CERT</code></td> <td>string</td> <td>PEM-encoded server certificate</td></tr>
</table>
[ where <em>x509</em> is a component of a X.509 DN: <code>C, SP, L, O, OU, CN, Email</code> ]</td>
</tr></table>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.wml b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.wml
index 8276e824690..e7e0fa080ac 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.wml
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.wml
@@ -135,12 +135,14 @@ which can be configured by <em>type</em>:
<li><code>exec:/path/to/program</code>
<p>
Here an external program is configured which is called at startup for each
- encrypted Private Key file. It is called with an argument of
- ``<code>servername:portnumber</code>'' for which it has to print the
- corresponding Pass Phrase to <code>stdout</code>. The intent is that this
- external program first runs security checks to make sure that the system
- is not compromised by an attacker, and only when these checks were passed
- successfully it provides the Pass Phrase.
+ encrypted Private Key file. It is called with two arguments (the first is
+ of the form ``<code>servername:portnumber</code>'', the second is either
+ ``<code>RSA</code>'' or ``<code>DSA</code>''), which indicate for which
+ server and algorithm it has to print the corresponding Pass Phrase to
+ <code>stdout</code>. The intent is that this external program first runs
+ security checks to make sure that the system is not compromised by an
+ attacker, and only when these checks were passed successfully it provides
+ the Pass Phrase.
<p>
Both these security checks, and the way the Pass Phrase is determined, can
be as complex as you like. Mod_ssl just defines the interface: an
@@ -1209,13 +1211,15 @@ The available <em>option</em>s are:
<p>
<li><code>ExportCertData</code>
<p>
- When this option is enabled, two additional CGI/SSI environment variables
- are created: <code>SSL_CLIENT_CERT</code> and
- <code>SSL_SERVER_CERT</code>. These contain the PEM-encoded X.509
- Certificates of client and server for the current HTTPS connection and can
- be used by CGI scripts for deeper Certificate checking. This bloats up
- the environment a little bit which is why you have to use this option to
- enable it on demand.
+ When this option is enabled, additional CGI/SSI environment variables are
+ created: <code>SSL_SERVER_CERT</code>, <code>SSL_CLIENT_CERT</code> and
+ <code>SSL_CLIENT_CERT_CHAIN</code><i>n</i> (with <i>n</i> = 0,1,2,..).
+ These contain the PEM-encoded X.509 Certificates of server and client for
+ the current HTTPS connection and can be used by CGI scripts for deeper
+ Certificate checking. Additionally all other certificates of the client
+ certificate chain are provided, too. This bloats up the environment a
+ little bit which is why you have to use this option to enable it on
+ demand.
<p>
<li><code>FakeBasicAuth</code>
<p>
@@ -1412,29 +1416,31 @@ REQUEST_FILENAME
<em>SSL-related variables:</em>
<pre>
-HTTPS SSL_CLIENT_M_VERSION SSL_SERVER_M_VERSION
- SSL_CLIENT_M_SERIAL SSL_SERVER_M_SERIAL
-SSL_PROTOCOL SSL_CLIENT_V_START SSL_SERVER_V_START
-SSL_SESSION_ID SSL_CLIENT_V_END SSL_SERVER_V_END
-SSL_CIPHER SSL_CLIENT_S_DN SSL_SERVER_S_DN
-SSL_CIPHER_ALGKEYSIZE SSL_CLIENT_S_DN_C SSL_SERVER_S_DN_C
-SSL_CIPHER_USEKEYSIZE SSL_CLIENT_S_DN_SP SSL_SERVER_S_DN_SP
-SSL_VERSION_LIBRARY SSL_CLIENT_S_DN_L SSL_SERVER_S_DN_L
-SSL_VERSION_INTERFACE SSL_CLIENT_S_DN_O SSL_SERVER_S_DN_O
- SSL_CLIENT_S_DN_OU SSL_SERVER_S_DN_OU
- SSL_CLIENT_S_DN_CN SSL_SERVER_S_DN_CN
- SSL_CLIENT_S_DN_Email SSL_SERVER_S_DN_Email
- SSL_CLIENT_I_DN SSL_SERVER_I_DN
- SSL_CLIENT_I_DN_C SSL_SERVER_I_DN_C
- SSL_CLIENT_I_DN_SP SSL_SERVER_I_DN_SP
- SSL_CLIENT_I_DN_L SSL_SERVER_I_DN_L
- SSL_CLIENT_I_DN_O SSL_SERVER_I_DN_O
- SSL_CLIENT_I_DN_OU SSL_SERVER_I_DN_OU
- SSL_CLIENT_I_DN_CN SSL_SERVER_I_DN_CN
- SSL_CLIENT_I_DN_Email SSL_SERVER_I_DN_Email
- SSL_CLIENT_A_SIG SSL_SERVER_A_SIG
- SSL_CLIENT_A_KEY SSL_SERVER_A_KEY
- SSL_CLIENT_CERT SSL_SERVER_CERT
+HTTPS SSL_CLIENT_M_VERSION SSL_SERVER_M_VERSION
+ SSL_CLIENT_M_SERIAL SSL_SERVER_M_SERIAL
+SSL_PROTOCOL SSL_CLIENT_V_START SSL_SERVER_V_START
+SSL_SESSION_ID SSL_CLIENT_V_END SSL_SERVER_V_END
+SSL_CIPHER SSL_CLIENT_S_DN SSL_SERVER_S_DN
+SSL_CIPHER_EXPORT SSL_CLIENT_S_DN_C SSL_SERVER_S_DN_C
+SSL_CIPHER_ALGKEYSIZE SSL_CLIENT_S_DN_SP SSL_SERVER_S_DN_SP
+SSL_CIPHER_USEKEYSIZE SSL_CLIENT_S_DN_L SSL_SERVER_S_DN_L
+SSL_VERSION_LIBRARY SSL_CLIENT_S_DN_O SSL_SERVER_S_DN_O
+SSL_VERSION_INTERFACE SSL_CLIENT_S_DN_OU SSL_SERVER_S_DN_OU
+ SSL_CLIENT_S_DN_CN SSL_SERVER_S_DN_CN
+ SSL_CLIENT_S_DN_Email SSL_SERVER_S_DN_Email
+ SSL_CLIENT_I_DN SSL_SERVER_I_DN
+ SSL_CLIENT_I_DN_C SSL_SERVER_I_DN_C
+ SSL_CLIENT_I_DN_SP SSL_SERVER_I_DN_SP
+ SSL_CLIENT_I_DN_L SSL_SERVER_I_DN_L
+ SSL_CLIENT_I_DN_O SSL_SERVER_I_DN_O
+ SSL_CLIENT_I_DN_OU SSL_SERVER_I_DN_OU
+ SSL_CLIENT_I_DN_CN SSL_SERVER_I_DN_CN
+ SSL_CLIENT_I_DN_Email SSL_SERVER_I_DN_Email
+ SSL_CLIENT_A_SIG SSL_SERVER_A_SIG
+ SSL_CLIENT_A_KEY SSL_SERVER_A_KEY
+ SSL_CLIENT_CERT SSL_SERVER_CERT
+ SSL_CLIENT_CERT_CHAIN<b>n</b>
+ SSL_CLIENT_VERIFY
</pre>
</td></tr></table>
</float>
@@ -1465,6 +1471,7 @@ compatibility variables.
<tr id=H><td><code>SSL_PROTOCOL</code></td> <td>string</td> <td>The SSL protocol version (SSLv2, SSLv3, TLSv1)</td></tr>
<tr id=H><td><code>SSL_SESSION_ID</code></td> <td>string</td> <td>The hex-encoded SSL session id</td></tr>
<tr id=D><td><code>SSL_CIPHER</code></td> <td>string</td> <td>The cipher specification name</td></tr>
+<tr id=D><td><code>SSL_CIPHER_EXPORT</code></td> <td>string</td> <td><code>true</code> if cipher is an export cipher</td></tr>
<tr id=H><td><code>SSL_CIPHER_USEKEYSIZE</code></td> <td>number</td> <td>Number of cipher bits (actually used)</td></tr>
<tr id=D><td><code>SSL_CIPHER_ALGKEYSIZE</code></td> <td>number</td> <td>Number of cipher bits (possible)</td></tr>
<tr id=H><td><code>SSL_VERSION_INTERFACE</code></td> <td>string</td> <td>The mod_ssl program version</td></tr>
@@ -1479,16 +1486,20 @@ compatibility variables.
<tr id=D><td><code>SSL_CLIENT_V_END</code></td> <td>string</td> <td>Validity of client's certificate (end time)</td></tr>
<tr id=H><td><code>SSL_CLIENT_A_SIG</code></td> <td>string</td> <td>Algorithm used for the signature of client's certificate</td></tr>
<tr id=D><td><code>SSL_CLIENT_A_KEY</code></td> <td>string</td> <td>Algorithm used for the public key of client's certificate</td></tr>
-<tr id=H><td><code>SSL_SERVER_M_VERSION</code></td> <td>string</td> <td>The version of the server certificate</td></tr>
-<tr id=D><td><code>SSL_SERVER_M_SERIAL</code></td> <td>string</td> <td>The serial of the server certificate</td></tr>
-<tr id=H><td><code>SSL_SERVER_S_DN</code></td> <td>string</td> <td>Subject DN in server's certificate</td></tr>
-<tr id=D><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Subject DN</td></tr>
-<tr id=H><td><code>SSL_SERVER_I_DN</code></td> <td>string</td> <td>Issuer DN of server's certificate</td></tr>
-<tr id=D><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Issuer DN</td></tr>
-<tr id=H><td><code>SSL_SERVER_V_START</code></td> <td>string</td> <td>Validity of server's certificate (start time)</td></tr>
-<tr id=D><td><code>SSL_SERVER_V_END</code></td> <td>string</td> <td>Validity of server's certificate (end time)</td></tr>
-<tr id=H><td><code>SSL_SERVER_A_SIG</code></td> <td>string</td> <td>Algorithm used for the signature of server's certificate</td></tr>
-<tr id=D><td><code>SSL_SERVER_A_KEY</code></td> <td>string</td> <td>Algorithm used for the public key of server's certificate</td></tr>
+<tr id=H><td><code>SSL_CLIENT_CERT</code></td> <td>string</td> <td>PEM-encoded client certificate</td></tr>
+<tr id=D><td><code>SSL_CLIENT_CERT_CHAIN</code><i>n</i></td> <td>string</td> <td>PEM-encoded certificates in client certificate chain</td></tr>
+<tr id=H><td><code>SSL_CLIENT_VERIFY</code></td> <td>string</td> <td><tt>NONE</tt>, <tt>SUCCESS</tt>, <tt>GENEROUS</tt> or <tt>FAILED:</tt><i>reason</i></td></tr>
+<tr id=D><td><code>SSL_SERVER_M_VERSION</code></td> <td>string</td> <td>The version of the server certificate</td></tr>
+<tr id=H><td><code>SSL_SERVER_M_SERIAL</code></td> <td>string</td> <td>The serial of the server certificate</td></tr>
+<tr id=D><td><code>SSL_SERVER_S_DN</code></td> <td>string</td> <td>Subject DN in server's certificate</td></tr>
+<tr id=H><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Subject DN</td></tr>
+<tr id=D><td><code>SSL_SERVER_I_DN</code></td> <td>string</td> <td>Issuer DN of server's certificate</td></tr>
+<tr id=H><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td> <td>Component of server's Issuer DN</td></tr>
+<tr id=D><td><code>SSL_SERVER_V_START</code></td> <td>string</td> <td>Validity of server's certificate (start time)</td></tr>
+<tr id=H><td><code>SSL_SERVER_V_END</code></td> <td>string</td> <td>Validity of server's certificate (end time)</td></tr>
+<tr id=D><td><code>SSL_SERVER_A_SIG</code></td> <td>string</td> <td>Algorithm used for the signature of server's certificate</td></tr>
+<tr id=H><td><code>SSL_SERVER_A_KEY</code></td> <td>string</td> <td>Algorithm used for the public key of server's certificate</td></tr>
+<tr id=D><td><code>SSL_SERVER_CERT</code></td> <td>string</td> <td>PEM-encoded server certificate</td></tr>
</table>
[ where <em>x509</em> is a component of a X.509 DN: <code>C, SP, L, O, OU, CN, Email</code> ]
</float>
diff --git a/usr.sbin/httpd/src/CHANGES.SSL b/usr.sbin/httpd/src/CHANGES.SSL
index 3e4f2c8c851..f66fd5cf107 100644
--- a/usr.sbin/httpd/src/CHANGES.SSL
+++ b/usr.sbin/httpd/src/CHANGES.SSL
@@ -23,6 +23,90 @@
/ __/ |__ _|
__ |_____(_) |_| ___________________________________________
+ Changes with mod_ssl 2.4.9 (05-Nov-1999 to 24-Nov-1999)
+
+ *) Fixed SSLRequire expression evaluation for number strings.
+ Expressions like `SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128'
+ didn't work if SSL_CIPHER_USEKEYSIZE was "40" because the evaluation
+ used strcmp(3) and this fails to compare numbers of different length.
+ An own comparison function is now used to avoid this problem.
+
+ *) Now on Win32 a warning is logged once on startup that mod_ssl is
+ NOT officially supported under Win32 and people have to use it there on
+ their own risk (and so shouldn't complain if it doesn't work). Because
+ only the Unix platform is officially supported and mod_ssl is checked
+ for security issues only related this platform.
+
+ *) For performance reasons it is unreasonable to create the SSL_*
+ CGI/SSI variables _all the time_, because their creation is
+ a rather expensive operation which slows down the server
+ noticeable. Instead it is more reasonable to let them create for
+ CGI and SSI requests _only_. For consistency reason with other
+ `SSLOptions' variables (which all have positive names) and to
+ avoid necessary cleanups changes in the future, I decided to make
+ the incompatibility change _NOW_ (sorry).
+
+ In short: With mod_ssl 2.4.9 per default no SSI/CGI variables
+ SSL_* are created any longer (only the special "HTTPS" variable is
+ always created). Instead one has to use `SSLOptions +StdEnvVars'
+ to switch the creation on.
+
+ *) Added an `SSLOptions' variable `StdEnvVars' which now controls
+ the creation of the numerious SSL_* CGI/SSI variables.
+
+ *) Renamed old variable SSL_{CLIENT,SERVER}_{S,I}_DN_SP to more
+ correct SSL_{CLIENT,SERVER}_{S,I}_DN_ST variable to conform to
+ RFC2156 and current OpenSSL state (which also prints this OID as
+ "ST" and no longer "SP").
+
+ *) Added support for SSL_{CLIENT,SERVER}_{S,I}_DN_{T,I,G,S,D,UID}
+ variables (corresponding to X.509 title, initials, givenName, surname,
+ description and uniqueIdentifier OIDs) to allow the checking of more
+ X.509 certificate ingredients.
+
+ *) Allow mod_rewrite to also lookup the "HTTPS" variable, for instance
+ via ``RewriteCond %{HTTPS} !=on''.
+
+ *) Removed old URL references to rsaref20.tar.Z from INSTALL document.
+
+ *) Now an explicit error message is logged also if an SSL session cannot be
+ stored to the DBM file via dbm_store (and not just if dbm_open failed).
+
+ *) Now the pass phrase dialog no longer uses the hard-coded
+ filedescriptor 10 as the storage for stderr while the pass phrase dialog
+ is displayed. Instead (at least under Unix) it tries to open /dev/null
+ and uses this filedescriptor instead. And when this fails (or always
+ under Win32) it uses the hard-coded filedescriptor 50 (a lot higher than
+ 10 to avoid problems with logfile rotation programs and other things
+ Apache could have started).
+
+ *) Fixed SSL_make_ciphersuite() function: it calculated the required string
+ length incorrectly and could segfault. BUT THIS FUNCTION IS STILL NOT
+ USED IN MOD_SSL AT ALL, so don't panic. This function is for debugging
+ purposes only.
+
+ *) Fixed a filedescriptor leak which happened if encrypted private keys
+ were used. Here the pass phrase dialog forgot to close a temporary
+ filedescriptor.
+
+ *) Added three new OpenSSL log entry annotations: First, "*no start
+ line*" now triggers "Bad file contents or format - or even just
+ a forgotten SSLCertificate KeyFile?" and "*bad password read*"
+ triggers "You entered an incorrect pass phrase!?". Additionally
+ "*bad mac decode*" now triggers "Browser still remembered details
+ of a re-created server certificate?" because people often get "bad
+ data" dialog boxes while (re-)testing with Snake Oil certs.
+
+ *) Added hint about possibly blocking /dev/random devices also to
+ httpd.conf-default to make sure people don't overlook this subtle
+ platform-dependent problem. Additionally a new FAQ entry was
+ made about this, too.
+
+ *) Added an entry to the FAQ about GIDs and their intermediate
+ certificate which has to be configured with SSLCertificateChainFile.
+
+ *) Fixed some external URLs in the FAQ.
+
Changes with mod_ssl 2.4.8 (02-Nov-1999 to 05-Nov-1999)
*) ** IMPORTANT BUGFIX **
diff --git a/usr.sbin/httpd/src/modules/ssl/libssl.version b/usr.sbin/httpd/src/modules/ssl/libssl.version
index 482255d17b1..048d140c25d 100644
--- a/usr.sbin/httpd/src/modules/ssl/libssl.version
+++ b/usr.sbin/httpd/src/modules/ssl/libssl.version
@@ -1 +1 @@
-mod_ssl/2.4.8-1.3.9
+mod_ssl/2.4.9-1.3.9
diff --git a/usr.sbin/httpd/src/modules/ssl/mod_ssl.h b/usr.sbin/httpd/src/modules/ssl/mod_ssl.h
index 256a12c0fa6..503615d0b5e 100644
--- a/usr.sbin/httpd/src/modules/ssl/mod_ssl.h
+++ b/usr.sbin/httpd/src/modules/ssl/mod_ssl.h
@@ -401,12 +401,13 @@ typedef int ssl_algo_t;
*/
#define SSL_OPT_NONE (0)
#define SSL_OPT_RELSET (1<<0)
-#define SSL_OPT_COMPATENVVARS (1<<1)
-#define SSL_OPT_EXPORTCERTDATA (1<<2)
-#define SSL_OPT_FAKEBASICAUTH (1<<3)
-#define SSL_OPT_STRICTREQUIRE (1<<4)
-#define SSL_OPT_OPTRENEGOTIATE (1<<5)
-#define SSL_OPT_ALL (SSL_OPT_COMPATENVVAR|SSL_OPT_EXPORTCERTDATA|SSL_OPT_FAKEBASICAUTH|SSL_OPT_STRICTREQUIRE|SSL_OPT_OPTRENEGOTIATE)
+#define SSL_OPT_STDENVVARS (1<<1)
+#define SSL_OPT_COMPATENVVARS (1<<2)
+#define SSL_OPT_EXPORTCERTDATA (1<<3)
+#define SSL_OPT_FAKEBASICAUTH (1<<4)
+#define SSL_OPT_STRICTREQUIRE (1<<5)
+#define SSL_OPT_OPTRENEGOTIATE (1<<6)
+#define SSL_OPT_ALL (SSL_OPT_STDENVVARS|SSL_OPT_COMPATENVVAR|SSL_OPT_EXPORTCERTDATA|SSL_OPT_FAKEBASICAUTH|SSL_OPT_STRICTREQUIRE|SSL_OPT_OPTRENEGOTIATE)
typedef int ssl_opt_t;
/*
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c
index 95c6c265f54..0d53222cb8a 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c
@@ -778,7 +778,9 @@ const char *ssl_cmd_SSLOptions(
first = FALSE;
}
- if (strcEQ(w, "CompatEnvVars"))
+ if (strcEQ(w, "StdEnvVars"))
+ opt = SSL_OPT_STDENVVARS;
+ else if (strcEQ(w, "CompatEnvVars"))
opt = SSL_OPT_COMPATENVVARS;
else if (strcEQ(w, "ExportCertData"))
opt = SSL_OPT_EXPORTCERTDATA;
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c
index 16680c607c8..350a6957ce1 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c
@@ -164,11 +164,17 @@ void ssl_init_Module(server_rec *s, pool *p)
/*
* Identification
*/
- if (mc->nInitCount == 1)
+ if (mc->nInitCount == 1) {
ssl_log(s, SSL_LOG_INFO, "Server: %s, Interface: %s, Library: %s",
SERVER_BASEVERSION,
ssl_var_lookup(p, NULL, NULL, NULL, "SSL_VERSION_INTERFACE"),
ssl_var_lookup(p, NULL, NULL, NULL, "SSL_VERSION_LIBRARY"));
+#ifdef WIN32
+ ssl_log(s, SSL_LOG_WARN, "You are using mod_ssl under Win32. "
+ "This combination is *NOT* officially supported. "
+ "Use it at your own risk!");
+#endif
+ }
/*
* Initialization round information
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c
index 8ef93eb3045..2561a43cbd3 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c
@@ -641,8 +641,8 @@ int ssl_hook_Access(request_rec *r)
X509_STORE *certstore;
X509_STORE_CTX certstorectx;
int depth;
- STACK_OF(SSL_CIPHER) *skCipherOld;
- STACK_OF(SSL_CIPHER) *skCipher;
+ STACK_OF(SSL_CIPHER) *skCipherOld;
+ STACK_OF(SSL_CIPHER) *skCipher;
SSL_CIPHER *pCipher;
ap_ctx *apctx;
int nVerifyOld;
@@ -1169,19 +1169,31 @@ static const char *ssl_hook_Fixup_vars[] = {
"SSL_CLIENT_V_END",
"SSL_CLIENT_S_DN",
"SSL_CLIENT_S_DN_C",
- "SSL_CLIENT_S_DN_SP",
+ "SSL_CLIENT_S_DN_ST",
"SSL_CLIENT_S_DN_L",
"SSL_CLIENT_S_DN_O",
"SSL_CLIENT_S_DN_OU",
"SSL_CLIENT_S_DN_CN",
+ "SSL_CLIENT_S_DN_T",
+ "SSL_CLIENT_S_DN_I",
+ "SSL_CLIENT_S_DN_G",
+ "SSL_CLIENT_S_DN_S",
+ "SSL_CLIENT_S_DN_D",
+ "SSL_CLIENT_S_DN_UID",
"SSL_CLIENT_S_DN_Email",
"SSL_CLIENT_I_DN",
"SSL_CLIENT_I_DN_C",
- "SSL_CLIENT_I_DN_SP",
+ "SSL_CLIENT_I_DN_ST",
"SSL_CLIENT_I_DN_L",
"SSL_CLIENT_I_DN_O",
"SSL_CLIENT_I_DN_OU",
"SSL_CLIENT_I_DN_CN",
+ "SSL_CLIENT_I_DN_T",
+ "SSL_CLIENT_I_DN_I",
+ "SSL_CLIENT_I_DN_G",
+ "SSL_CLIENT_I_DN_S",
+ "SSL_CLIENT_I_DN_D",
+ "SSL_CLIENT_I_DN_UID",
"SSL_CLIENT_I_DN_Email",
"SSL_CLIENT_A_KEY",
"SSL_CLIENT_A_SIG",
@@ -1191,19 +1203,31 @@ static const char *ssl_hook_Fixup_vars[] = {
"SSL_SERVER_V_END",
"SSL_SERVER_S_DN",
"SSL_SERVER_S_DN_C",
- "SSL_SERVER_S_DN_SP",
+ "SSL_SERVER_S_DN_ST",
"SSL_SERVER_S_DN_L",
"SSL_SERVER_S_DN_O",
"SSL_SERVER_S_DN_OU",
"SSL_SERVER_S_DN_CN",
+ "SSL_SERVER_S_DN_T",
+ "SSL_SERVER_S_DN_I",
+ "SSL_SERVER_S_DN_G",
+ "SSL_SERVER_S_DN_S",
+ "SSL_SERVER_S_DN_D",
+ "SSL_SERVER_S_DN_UID",
"SSL_SERVER_S_DN_Email",
"SSL_SERVER_I_DN",
"SSL_SERVER_I_DN_C",
- "SSL_SERVER_I_DN_SP",
+ "SSL_SERVER_I_DN_ST",
"SSL_SERVER_I_DN_L",
"SSL_SERVER_I_DN_O",
"SSL_SERVER_I_DN_OU",
"SSL_SERVER_I_DN_CN",
+ "SSL_SERVER_I_DN_T",
+ "SSL_SERVER_I_DN_I",
+ "SSL_SERVER_I_DN_G",
+ "SSL_SERVER_I_DN_S",
+ "SSL_SERVER_I_DN_D",
+ "SSL_SERVER_I_DN_UID",
"SSL_SERVER_I_DN_Email",
"SSL_SERVER_A_KEY",
"SSL_SERVER_A_SIG",
@@ -1233,12 +1257,16 @@ int ssl_hook_Fixup(request_rec *r)
/*
* Annotate the SSI/CGI environment with standard SSL information
*/
- ap_table_set(e, "HTTPS", "on"); /* the HTTPS (=HTTP over SSL) flag! */
- for (i = 0; ssl_hook_Fixup_vars[i] != NULL; i++) {
- var = (char *)ssl_hook_Fixup_vars[i];
- val = ssl_var_lookup(r->pool, r->server, r->connection, r, var);
- if (!strIsEmpty(val))
- ap_table_set(e, var, val);
+ /* the always present HTTPS (=HTTP over SSL) flag! */
+ ap_table_set(e, "HTTPS", "on");
+ /* standard SSL environment variables */
+ if (dc->nOptions & SSL_OPT_STDENVVARS) {
+ for (i = 0; ssl_hook_Fixup_vars[i] != NULL; i++) {
+ var = (char *)ssl_hook_Fixup_vars[i];
+ val = ssl_var_lookup(r->pool, r->server, r->connection, r, var);
+ if (!strIsEmpty(val))
+ ap_table_set(e, var, val);
+ }
}
/*
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_log.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_log.c
index 7b18e8b4347..31ac31cef83 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_log.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_log.c
@@ -139,10 +139,13 @@ static struct {
{ "*envelope*bad*decrypt*", "wrong pass phrase!?" },
{ "*CLIENT_HELLO*unknown*protocol*", "speaking not SSL to HTTPS port!?" },
{ "*CLIENT_HELLO*http*request*", "speaking HTTP to HTTPS port!?" },
- { "*SSL3_READ_BYTES:sslv3*alert*bad*certificate*", "Subject CN in certificate not server name!?" },
+ { "*SSL3_READ_BYTES:sslv3*alert*bad*certificate*", "Subject CN in certificate not server name or identical to CA!?" },
{ "*self signed certificate in certificate chain*", "Client certificate signed by CA not known to server?" },
{ "*peer did not return a certificate*", "No CAs known to server for verification?" },
{ "*no shared cipher*", "Too restrictive SSLCipherSuite or using DSA server certificate?" },
+ { "*no start line*", "Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?" },
+ { "*bad password read*", "You entered an incorrect pass phrase!?" },
+ { "*bad mac decode*", "Browser still remembered details of a re-created server certificate?" },
{ NULL, NULL }
};
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_pphrase.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_pphrase.c
index 8bcd2058cd2..570cabe3fa9 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_pphrase.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_pphrase.c
@@ -72,7 +72,7 @@
** _________________________________________________________________
*/
-#define STDERR_FILENO_STORE 10
+#define STDERR_FILENO_STORE 50
#define BUILTIN_DIALOG_BACKOFF 2
#define BUILTIN_DIALOG_RETRIES 5
@@ -400,6 +400,7 @@ int ssl_pphrase_Handle_CB(char *buf, int bufsize, int ask_twice)
int *pnPassPhraseDialog;
int *pnPassPhraseDialogCur;
BOOL *pbPassPhraseDialogOnce;
+ int stderr_store;
char **cpp;
int len = -1;
@@ -448,7 +449,13 @@ int ssl_pphrase_Handle_CB(char *buf, int bufsize, int ask_twice)
* at our init stage Apache already connected STDERR
* to the general error logfile.
*/
- dup2(STDERR_FILENO, STDERR_FILENO_STORE);
+#ifdef WIN32
+ stderr_store = STDERR_FILENO_STORE;
+#else
+ if ((stderr_store = open("/dev/null", O_WRONLY)) == -1)
+ stderr_store = STDERR_FILENO_STORE;
+#endif
+ dup2(STDERR_FILENO, stderr_store);
#ifdef WIN32
if ((con = fopen("con", "w")) != NULL)
dup2(fileno(con), STDERR_FILENO);
@@ -497,9 +504,11 @@ int ssl_pphrase_Handle_CB(char *buf, int bufsize, int ask_twice)
/*
* Restore STDERR to Apache error logfile
*/
- dup2(STDERR_FILENO_STORE, STDERR_FILENO);
+ dup2(stderr_store, STDERR_FILENO);
+ close(stderr_store);
#ifdef WIN32
- fclose(con);
+ if (con != NULL)
+ fclose(con);
#endif
}
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c
index 3a98909cb64..593245d3e21 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c
@@ -404,7 +404,15 @@ BOOL ssl_scache_dbm_store(server_rec *s, ssl_scinfo_t *SCI)
free(dbmval.dptr);
return FALSE;
}
- ssl_dbm_store(dbm, dbmkey, dbmval, DBM_INSERT);
+ if (ssl_dbm_store(dbm, dbmkey, dbmval, DBM_INSERT) < 0) {
+ ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
+ "Cannot store SSL session to DBM file `%s'",
+ mc->szSessionCacheDataFile);
+ ssl_dbm_close(dbm);
+ ssl_mutex_off(s);
+ free(dbmval.dptr);
+ return FALSE;
+ }
ssl_dbm_close(dbm);
ssl_mutex_off(s);
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c
index 207084f8770..84fa17c39e7 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c
@@ -189,6 +189,12 @@ char *ssl_var_lookup(pool *p, server_rec *s, conn_rec *c, request_rec *r, char *
result = c->ap_auth_type;
else if (strlen(var) > 4 && strcEQn(var, "SSL_", 4))
result = ssl_var_lookup_ssl(p, c, var+4);
+ else if (strcEQ(var, "HTTPS")) {
+ if (ap_ctx_get(c->client->ctx, "ssl") != NULL)
+ result = "on";
+ else
+ result = "off";
+ }
}
/*
@@ -390,11 +396,18 @@ static const struct {
int nid;
} ssl_var_lookup_ssl_cert_dn_rec[] = {
{ "C", NID_countryName },
- { "SP", NID_stateOrProvinceName },
+ { "ST", NID_stateOrProvinceName }, /* officially (RFC2156) */
+ { "SP", NID_stateOrProvinceName }, /* compatibility (SSLeay) */
{ "L", NID_localityName },
{ "O", NID_organizationName },
{ "OU", NID_organizationalUnitName },
{ "CN", NID_commonName },
+ { "T", NID_title },
+ { "I", NID_initials },
+ { "G", NID_givenName },
+ { "S", NID_surname },
+ { "D", NID_description },
+ { "UID", NID_uniqueIdentifier },
{ "Email", NID_pkcs9_emailAddress },
{ NULL, 0 }
};
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_expr_eval.c b/usr.sbin/httpd/src/modules/ssl/ssl_expr_eval.c
index 8fd58a59768..6e1fc60384b 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_expr_eval.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_expr_eval.c
@@ -70,9 +70,10 @@
** _________________________________________________________________
*/
-static BOOL ssl_expr_eval_comp(request_rec *r, ssl_expr *node);
-static char *ssl_expr_eval_word(request_rec *r, ssl_expr *node);
-static char *ssl_expr_eval_func_file(request_rec *r, char *filename);
+static BOOL ssl_expr_eval_comp(request_rec *, ssl_expr *);
+static char *ssl_expr_eval_word(request_rec *, ssl_expr *);
+static char *ssl_expr_eval_func_file(request_rec *, char *);
+static int ssl_expr_eval_strcmplex(char *, char *);
BOOL ssl_expr_eval(request_rec *r, ssl_expr *node)
{
@@ -124,22 +125,22 @@ static BOOL ssl_expr_eval_comp(request_rec *r, ssl_expr *node)
case op_LT: {
ssl_expr *e1 = (ssl_expr *)node->node_arg1;
ssl_expr *e2 = (ssl_expr *)node->node_arg2;
- return (strcmp(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) < 0);
+ return (ssl_expr_eval_strcmplex(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) < 0);
}
case op_LE: {
ssl_expr *e1 = (ssl_expr *)node->node_arg1;
ssl_expr *e2 = (ssl_expr *)node->node_arg2;
- return (strcmp(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) <= 0);
+ return (ssl_expr_eval_strcmplex(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) <= 0);
}
case op_GT: {
ssl_expr *e1 = (ssl_expr *)node->node_arg1;
ssl_expr *e2 = (ssl_expr *)node->node_arg2;
- return (strcmp(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) > 0);
+ return (ssl_expr_eval_strcmplex(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) > 0);
}
case op_GE: {
ssl_expr *e1 = (ssl_expr *)node->node_arg1;
ssl_expr *e2 = (ssl_expr *)node->node_arg2;
- return (strcmp(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) >= 0);
+ return (ssl_expr_eval_strcmplex(ssl_expr_eval_word(r, e1), ssl_expr_eval_word(r, e2)) >= 0);
}
case op_IN: {
ssl_expr *e1 = (ssl_expr *)node->node_arg1;
@@ -255,3 +256,27 @@ static char *ssl_expr_eval_func_file(request_rec *r, char *filename)
return buf;
}
+/* a variant of strcmp(3) which works correctly also for number strings */
+static int ssl_expr_eval_strcmplex(char *cpNum1, char *cpNum2)
+{
+ int i, n1, n2;
+
+ if (cpNum1 == NULL)
+ return -1;
+ if (cpNum2 == NULL)
+ return +1;
+ n1 = strlen(cpNum1);
+ n2 = strlen(cpNum2);
+ if (n1 > n2)
+ return 1;
+ if (n1 < n2)
+ return -1;
+ for (i = 0; i < n1; i++) {
+ if (cpNum1[i] > cpNum2[i])
+ return 1;
+ if (cpNum1[i] < cpNum2[i])
+ return -1;
+ }
+ return 0;
+}
+
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c b/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c
index 18a83ac8d5f..a357be08c7f 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c
@@ -279,14 +279,15 @@ char *SSL_make_ciphersuite(pool *p, SSL *ssl)
if (ssl == NULL)
return "";
- sk = SSL_get_ciphers(ssl);
- if (sk == NULL)
+ if ((sk = SSL_get_ciphers(ssl)) == NULL)
return "";
l = 0;
for (i = 0; i < sk_SSL_CIPHER_num(sk); i++) {
c = sk_SSL_CIPHER_value(sk, i);
- l += strlen(c->name+2+1);
+ l += strlen(c->name)+2+1;
}
+ if (l == 0)
+ return "";
cpCipherSuite = (char *)ap_palloc(p, l+1);
cp = cpCipherSuite;
for (i = 0; i < sk_SSL_CIPHER_num(sk); i++) {
@@ -298,7 +299,7 @@ char *SSL_make_ciphersuite(pool *p, SSL *ssl)
*cp++ = (c->valid == 1 ? '1' : '0');
*cp++ = ':';
}
- *cp = NUL;
+ *(cp-1) = NUL;
return cpCipherSuite;
}