Skip to content

Commit c846964

Browse files
committed
xform for mod_ssl
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1927322 13f79535-47bb-0310-9956-ffa450edef68
1 parent 68b9128 commit c846964

File tree

1 file changed

+56
-63
lines changed

1 file changed

+56
-63
lines changed

docs/manual/mod/mod_ssl.html.en.utf8

Lines changed: 56 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Layer (SSL) and Transport Layer Security (TLS) protocols</td></tr>
4040
<p>This module provides SSL v3 and TLS v1.x support for the Apache
4141
HTTP Server. SSL v2 is no longer supported.</p>
4242

43-
<p>This module relies on <a href="http://www.openssl.org/">OpenSSL</a>
43+
<p>This module relies on <a href="https://www.openssl.org/">OpenSSL</a>
4444
to provide the cryptographic engine.</p>
4545

4646
<p>Further details, discussion, and examples are provided in the
@@ -66,12 +66,12 @@ to provide the cryptographic engine.</p>
6666
<li><img alt="" src="../images/down.gif" /> <a href="#sslcertificatefile">SSLCertificateFile</a></li>
6767
<li><img alt="" src="../images/down.gif" /> <a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></li>
6868
<li><img alt="" src="../images/down.gif" /> <a href="#sslciphersuite">SSLCipherSuite</a></li>
69+
<li><img alt="" src="../images/down.gif" /> <a href="#sslclienthellovars">SSLClientHelloVars</a></li>
6970
<li><img alt="" src="../images/down.gif" /> <a href="#sslcompression">SSLCompression</a></li>
7071
<li><img alt="" src="../images/down.gif" /> <a href="#sslcryptodevice">SSLCryptoDevice</a></li>
7172
<li><img alt="" src="../images/down.gif" /> <a href="#sslengine">SSLEngine</a></li>
7273
<li><img alt="" src="../images/down.gif" /> <a href="#sslfips">SSLFIPS</a></li>
7374
<li><img alt="" src="../images/down.gif" /> <a href="#sslhonorcipherorder">SSLHonorCipherOrder</a></li>
74-
<li><img alt="" src="../images/down.gif" /> <a href="#sslinsecurerenegotiation">SSLInsecureRenegotiation</a></li>
7575
<li><img alt="" src="../images/down.gif" /> <a href="#sslocspdefaultresponder">SSLOCSPDefaultResponder</a></li>
7676
<li><img alt="" src="../images/down.gif" /> <a href="#sslocspenable">SSLOCSPEnable</a></li>
7777
<li><img alt="" src="../images/down.gif" /> <a href="#sslocspnoverify">SSLOCSPNoverify</a></li>
@@ -198,6 +198,15 @@ compatibility variables.</p>
198198
<tr class="odd"><td><code>SSL_SRP_USER</code></td> <td>string</td> <td>SRP username</td></tr>
199199
<tr><td><code>SSL_SRP_USERINFO</code></td> <td>string</td> <td>SRP user info</td></tr>
200200
<tr class="odd"><td><code>SSL_TLS_SNI</code></td> <td>string</td> <td>Contents of the SNI TLS extension (if supplied with ClientHello)</td></tr>
201+
<tr><td><code>SSL_HANDSHAKE_RTT</code></td> <td>number</td> <td>Round-trip time of TLS handshake in microseconds including endpoint processing (set to empty string if OpenSSL version prior to 3.2 or if round-trip time can not be determined)</td></tr>
202+
<tr class="odd"><td><code>SSL_CLIENTHELLO_VERSION</code></td> <td>string</td> <td>Version field (legacy) from ClientHello as four hex encoded characters</td></tr>
203+
<tr><td><code>SSL_CLIENTHELLO_CIPHERS</code></td> <td>string</td> <td>Cipher Suites from ClientHello as four hex encoded characters per item</td></tr>
204+
<tr class="odd"><td><code>SSL_CLIENTHELLO_EXTENSIONS</code></td> <td>string</td> <td>Extension IDs from ClientHello as four hex encoded characters per item</td></tr>
205+
<tr><td><code>SSL_CLIENTHELLO_GROUPS</code></td> <td>string</td> <td>Value of Supported Groups extension (10) from ClientHello as four hex encoded characters per item</td></tr>
206+
<tr class="odd"><td><code>SSL_CLIENTHELLO_EC_FORMATS</code></td> <td>string</td> <td>Value of EC Point Formats extension (11) from ClientHello as two hex encoded characters per item</td></tr>
207+
<tr><td><code>SSL_CLIENTHELLO_SIG_ALGOS</code></td> <td>string</td> <td>Value of Signature Algorithms extension (13) from ClientHello as four hex encoded characters per item</td></tr>
208+
<tr class="odd"><td><code>SSL_CLIENTHELLO_ALPN</code></td> <td>string</td> <td>Value of ALPN extension (16) from ClientHello as hex encoded string including leading string lengths</td></tr>
209+
<tr><td><code>SSL_CLIENTHELLO_VERSIONS</code></td> <td>string</td> <td>Value of Supported Versions extension (43) from ClientHello as four hex encoded characters per item</td></tr>
201210
</table>
202211

203212
<p><em>x509</em> specifies a component of an X.509 DN; one of
@@ -230,6 +239,10 @@ suffix (if any). For example, <code>SSL_SERVER_S_DN_OU_RAW</code> or
230239
<p><code>SSL_CLIENT_V_REMAIN</code> is only available in version 2.1
231240
and later.</p>
232241

242+
<p>The <code>SSL_CLIENTHELLO_*</code> variables require the directive
243+
<code class="directive"><a href="#sslclienthellovars">SSLClientHelloVars</a></code> to be
244+
enabled or they will not be populated.</p>
245+
233246
<p>A number of additional environment variables can also be used
234247
in <code class="directive">SSLRequire</code> expressions, or in custom log
235248
formats:</p>
@@ -625,9 +638,10 @@ If using a PEM file, at minimum, the file must include an end-entity (leaf) cert
625638
The directive can be used multiple times (referencing different filenames)
626639
to support multiple algorithms for server authentication - typically
627640
RSA, DSA, and ECC. The number of supported algorithms depends on the
628-
OpenSSL version being used for mod_ssl: with version 1.0.0 or later,
629-
<code>openssl list-public-key-algorithms</code> will output a list
630-
of supported algorithms, see also the note below about limitations
641+
OpenSSL version being used for mod_ssl: with version 3.0 or later,
642+
<code>openssl list -public-key-algorithms</code> (or
643+
<code>openssl list-public-key-algorithms</code> with OpenSSL 1.0) will output a list
644+
of supported algorithms. See the note below about limitations
631645
of OpenSSL versions prior to 1.0.2 and the ways to work around them.
632646
</p>
633647

@@ -677,7 +691,7 @@ Beginning with version 2.4.7, mod_ssl makes use of
677691
standardized DH parameters with prime lengths of 2048, 3072 and 4096 bits
678692
and with additional prime lengths of 6144 and 8192 bits beginning with
679693
version 2.4.10
680-
(from <a href="http://www.ietf.org/rfc/rfc3526.txt">RFC 3526</a>), and hands
694+
(from <a href="https://www.rfc-editor.org/rfc/rfc3526">RFC 3526</a>), and hands
681695
them out to clients based on the length of the certificate's RSA/DSA key.
682696
With Java-based clients in particular (Java 7 or earlier), this may lead
683697
to handshake failures - see this
@@ -796,7 +810,7 @@ Since TLSv1.3 does not offer renegotiations, specifying ciphers for it in
796810
a directory context is not allowed.</p>
797811
<p>
798812
For a list of TLSv1.3 cipher names, see
799-
<a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_ciphersuites.html">the OpenSSL
813+
<a href="https://docs.openssl.org/master/man3/SSL_CTX_set_ciphersuites/">the OpenSSL
800814
documentation</a>.</p>
801815
<p>
802816
An SSL cipher specification in <em>cipher-spec</em> is composed of 4 major
@@ -943,6 +957,26 @@ KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1</pre></
943957
<tr><td><code>EXP-ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>RC4(40)</td> <td>MD5</td> <td> export</td> </tr>
944958
</table>
945959

960+
</div>
961+
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
962+
<div class="directive-section"><h2><a name="SSLClientHelloVars" id="SSLClientHelloVars">SSLClientHelloVars</a> <a name="sslclienthellovars" id="sslclienthellovars">Directive</a> <a title="Permanent link" href="#sslclienthellovars" class="permalink">&para;</a></h2>
963+
<table class="directive">
964+
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable collection of ClientHello variables</td></tr>
965+
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLClientHelloVars on|off</code></td></tr>
966+
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLClientHelloVars off</code></td></tr>
967+
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
968+
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
969+
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
970+
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in httpd 2.5.2 and later, requires OpenSSL 1.1.1 or later</td></tr>
971+
</table>
972+
<p>This directive enables collection of ClientHello data during the handshake that is retained for
973+
the length of the connection so it can be exposed as <code>SSL_CLIENTHELLLO_*</code> environment
974+
variables for requests depending upon the <code>StdEnvVars</code> setting. The variables are
975+
formatted as the hex-encoded raw buffers seen in the raw network protocol and as provided
976+
by OpenSSL. GREASE (RFC 8701) values are filtered by OpenSSL when enumerating extension IDs, but
977+
otherwise, are passed through unchanged for other variables. If this directive is not enabled or
978+
if OpenSSL prior to version 1.1.1 is used, these variables will not have a value set.</p>
979+
946980
</div>
947981
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
948982
<div class="directive-section"><h2><a name="SSLCompression" id="SSLCompression">SSLCompression</a> <a name="sslcompression" id="sslcompression">Directive</a> <a title="Permanent link" href="#sslcompression" class="permalink">&para;</a></h2>
@@ -993,7 +1027,7 @@ With OpenSSL 3.0 or later, if no engine is specified but the key or certificate
9931027
is specified using a <a href="https://tools.ietf.org/html/rfc7512">PKCS#11 URIs</a>
9941028
then it is tried to load the key and certificate from an OpenSSL provider.
9951029
The OpenSSL provider to use must be defined and configured in the OpenSSL config file,
996-
and it must support the <a href="https://www.openssl.org/docs/man3.0/man7/provider-storemgmt.html">STORE method</a>
1030+
and it must support the <a href="https://docs.openssl.org/3.0/man7/provider-storemgmt/">STORE method</a>
9971031
for <a href="https://tools.ietf.org/html/rfc7512">PKCS#11 URIs</a>.
9981032
</p>
9991033

@@ -1002,11 +1036,15 @@ for <a href="https://tools.ietf.org/html/rfc7512">PKCS#11 URIs</a>.
10021036
<div class="directive-section"><h2><a name="SSLEngine" id="SSLEngine">SSLEngine</a> <a name="sslengine" id="sslengine">Directive</a> <a title="Permanent link" href="#sslengine" class="permalink">&para;</a></h2>
10031037
<table class="directive">
10041038
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>SSL Engine Operation Switch</td></tr>
1005-
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLEngine on|off|optional</code></td></tr>
1039+
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLEngine on|off</code></td></tr>
10061040
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLEngine off</code></td></tr>
10071041
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
10081042
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
10091043
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
1044+
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>
1045+
Support for the "optional" argument was removed in 2.4.64. It enabled
1046+
RFC 2817 (TLS Upgrade) support.
1047+
</td></tr>
10101048
</table>
10111049
<p>
10121050
This directive toggles the usage of the SSL/TLS Protocol Engine. This
@@ -1018,10 +1056,6 @@ SSLEngine on
10181056
#...
10191057
&lt;/VirtualHost&gt;</pre>
10201058
</div>
1021-
<p><code class="directive">SSLEngine</code> can be set to <code>optional</code>:
1022-
this enables support for
1023-
<a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>.
1024-
</p>
10251059

10261060
</div>
10271061
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
@@ -1068,47 +1102,6 @@ server's preference will be used instead.</p>
10681102
<div class="example"><h3>Example</h3><pre class="prettyprint lang-config">SSLHonorCipherOrder on</pre>
10691103
</div>
10701104

1071-
</div>
1072-
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1073-
<div class="directive-section"><h2><a name="SSLInsecureRenegotiation" id="SSLInsecureRenegotiation">SSLInsecureRenegotiation</a> <a name="sslinsecurerenegotiation" id="sslinsecurerenegotiation">Directive</a> <a title="Permanent link" href="#sslinsecurerenegotiation" class="permalink">&para;</a></h2>
1074-
<table class="directive">
1075-
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Option to enable support for insecure renegotiation</td></tr>
1076-
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLInsecureRenegotiation on|off</code></td></tr>
1077-
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLInsecureRenegotiation off</code></td></tr>
1078-
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
1079-
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
1080-
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
1081-
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available if using OpenSSL 0.9.8m or later</td></tr>
1082-
</table>
1083-
<p>As originally specified, all versions of the SSL and TLS protocols
1084-
(up to and including TLS/1.2) were vulnerable to a Man-in-the-Middle
1085-
attack
1086-
(<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2009-3555">CVE-2009-3555</a>)
1087-
during a renegotiation. This vulnerability allowed an attacker to
1088-
"prefix" a chosen plaintext to the HTTP request as seen by the web
1089-
server. A protocol extension was developed which fixed this
1090-
vulnerability if supported by both client and server.</p>
1091-
1092-
<p>If <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is linked against OpenSSL version 0.9.8m
1093-
or later, by default renegotiation is only supported with
1094-
clients supporting the new protocol extension. If this directive is
1095-
enabled, renegotiation will be allowed with old (unpatched) clients,
1096-
albeit insecurely.</p>
1097-
1098-
<div class="warning"><h3>Security warning</h3>
1099-
<p>If this directive is enabled, SSL connections will be vulnerable to
1100-
the Man-in-the-Middle prefix attack as described
1101-
in <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2009-3555">CVE-2009-3555</a>.</p>
1102-
</div>
1103-
1104-
<div class="example"><h3>Example</h3><pre class="prettyprint lang-config">SSLInsecureRenegotiation on</pre>
1105-
</div>
1106-
1107-
<p>The <code>SSL_SECURE_RENEG</code> environment variable can be used
1108-
from an SSI or CGI script to determine whether secure renegotiation is
1109-
supported for a given SSL connection.</p>
1110-
1111-
11121105
</div>
11131106
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
11141107
<div class="directive-section"><h2><a name="SSLOCSPDefaultResponder" id="SSLOCSPDefaultResponder">SSLOCSPDefaultResponder</a> <a name="sslocspdefaultresponder" id="sslocspdefaultresponder">Directive</a> <a title="Permanent link" href="#sslocspdefaultresponder" class="permalink">&para;</a></h2>
@@ -1295,7 +1288,7 @@ features are added to OpenSSL.</p>
12951288
depends on the OpenSSL version being used for <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>
12961289
(at least version 1.0.2 is required). For a list of supported command
12971290
names, see the section <em>Supported configuration file commands</em> in the
1298-
<a href="http://www.openssl.org/docs/man1.0.2/ssl/SSL_CONF_cmd.html#SUPPORTED-CONFIGURATION-FILE-COMMANDS">SSL_CONF_cmd(3)</a> manual page for OpenSSL.</p>
1291+
<a href="https://docs.openssl.org/master/man3/SSL_CONF_cmd/#supported-configuration-file-commands">SSL_CONF_cmd(3)</a> manual page for OpenSSL.</p>
12991292

13001293
<div class="example"><h3>Examples</h3><pre class="prettyprint lang-config">SSLOpenSSLConfCmd Options -SessionTicket,ServerPreference
13011294
SSLOpenSSLConfCmd ECDHParameters brainpoolP256r1
@@ -1577,29 +1570,29 @@ The available (case-insensitive) <em>protocol</em>s are:</p>
15771570
This is the Secure Sockets Layer (SSL) protocol, version 3.0, from
15781571
the Netscape Corporation.
15791572
It is the successor to SSLv2 and the predecessor to TLSv1, but is
1580-
deprecated in <a href="http://www.ietf.org/rfc/rfc7568.txt">RFC 7568</a>.</p></li>
1573+
deprecated in <a href="https://www.rfc-editor.org/rfc/rfc7568">RFC 7568</a>.</p></li>
15811574

15821575
<li><code>TLSv1</code>
15831576
<p>
15841577
This is the Transport Layer Security (TLS) protocol, version 1.0.
15851578
It is the successor to SSLv3 and is defined in
1586-
<a href="http://www.ietf.org/rfc/rfc2246.txt">RFC 2246</a>.
1579+
<a href="https://www.rfc-editor.org/rfc/rfc2246">RFC 2246</a>.
15871580
It is supported by nearly every client.</p></li>
15881581

15891582
<li><code>TLSv1.1</code> (when using OpenSSL 1.0.1 and later)
15901583
<p>
15911584
A revision of the TLS 1.0 protocol, as defined in
1592-
<a href="http://www.ietf.org/rfc/rfc4346.txt">RFC 4346</a>.</p></li>
1585+
<a href="https://www.rfc-editor.org/rfc/rfc4346">RFC 4346</a>.</p></li>
15931586

15941587
<li><code>TLSv1.2</code> (when using OpenSSL 1.0.1 and later)
15951588
<p>
15961589
A revision of the TLS 1.1 protocol, as defined in
1597-
<a href="http://www.ietf.org/rfc/rfc5246.txt">RFC 5246</a>.</p></li>
1590+
<a href="https://www.rfc-editor.org/rfc/rfc5246">RFC 5246</a>.</p></li>
15981591

15991592
<li><code>TLSv1.3</code> (when using OpenSSL 1.1.1 and later)
16001593
<p>
16011594
A new version of the TLS protocol, as defined in
1602-
<a href="http://www.ietf.org/rfc/rfc8446.txt">RFC 8446</a>.</p></li>
1595+
<a href="https://www.rfc-editor.org/rfc/rfc8446">RFC 8446</a>.</p></li>
16031596

16041597
<li><code>all</code>
16051598
<p>
@@ -2510,7 +2503,7 @@ values like 300 in real life.</p>
25102503
</table>
25112504
<p>Optionally configures a secret key for encrypting and decrypting
25122505
TLS session tickets, as defined in
2513-
<a href="http://www.ietf.org/rfc/rfc5077.txt">RFC 5077</a>.
2506+
<a href="https://www.rfc-editor.org/rfc/rfc5077">RFC 5077</a>.
25142507
Primarily suitable for clustered environments where TLS sessions information
25152508
should be shared between multiple nodes. For single-instance httpd setups,
25162509
it is recommended to <em>not</em> configure a ticket key file, but to
@@ -2845,7 +2838,7 @@ OCSP response for a single cert. For server certificates with intermediate
28452838
CA certificates in their chain (the typical case nowadays),
28462839
stapling in its current implementation therefore only partially achieves the
28472840
stated goal of "saving roundtrips and resources" - see also
2848-
<a href="http://www.ietf.org/rfc/rfc6961.txt">RFC 6961</a>
2841+
<a href="https://www.rfc-editor.org/rfc/rfc6961">RFC 6961</a>
28492842
(TLS Multiple Certificate Status Extension).
28502843
</p>
28512844

@@ -2950,7 +2943,7 @@ var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_ssl.html';
29502943
}
29512944
})(window, document);
29522945
//--><!]]></script></div><div id="footer">
2953-
<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
2946+
<p class="apache">Copyright 2025 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
29542947
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
29552948
if (typeof(prettyPrint) !== 'undefined') {
29562949
prettyPrint();

0 commit comments

Comments
 (0)