@@ -1816,6 +1816,91 @@ SSLStrictSNIVHostCheck on
18161816</usage >
18171817</directivesynopsis >
18181818
1819+ <directivesynopsis >
1820+ <name >SSLVHostSNIPolicy</name >
1821+ <description >Set compatibility policy for SNI client access to virtual hosts.</description >
1822+ <syntax >SSLVHostSNIPolicy strict|secure|authonly|insecure</syntax >
1823+ <default >SSLVHostSNIPolicy secure</default >
1824+ <contextlist ><context >server config</context ></contextlist >
1825+ <compatibility >Available in httpd 2.5 and later</compatibility >
1826+
1827+ <usage ><p >This directive sets policy applied when checking whether the
1828+ <directive module =" core" type =" section" >VirtualHost</directive >
1829+ identified by the <code >Host</code > request header in an HTTP request
1830+ is compatible with the <directive module =" core"
1831+ type=" section" >VirtualHost</directive > identified from the SNI
1832+ extension sent during the initial TLS connection handshake. If an HTTP
1833+ request is associated with a virtual host which has an incompatible
1834+ SSL/TLS configuration under the policy used, an HTTP error response
1835+ with status code 421 ("Misdirected Request") will be sent.</p >
1836+
1837+ <p >The <code >strict</code > policy blocks all HTTP requests which are
1838+ identified with a different virtual host to that identifed by SNI.
1839+ The <code >insecure</code > policy allows all HTTP requests regardless
1840+ of virtual host identified; such a configuration may be vulnerable to
1841+ <a
1842+ href=" https://httpd.apache.org/security/vulnerabilities_24.html" >CVE-2025-23048</a >.
1843+ </p >
1844+
1845+ <p >The (default) <code >secure</code >, and <code >authonly</code >
1846+ policies compare specific aspects of the SSL configuration for the two
1847+ virtual hosts, which are grouped into two categories:
1848+
1849+ <ul >
1850+ <li ><strong >client vertification and authentication
1851+ settings</strong >: directives which affect TLS client certificate
1852+ verification or authentication, such as <directive
1853+ module =" mod_ssl" >SSLVerifyClient</directive >, <directive
1854+ module =" mod_ssl" >SSLVerifyMode</directive >, <directive
1855+ module =" mod_ssl" >SSLCACertificatePath</directive >, <directive
1856+ module =" mod_ssl" >SSLSRPVerifierFile</directive >; any use of <directive
1857+ module =" mod_ssl" >SSLOpenSSLConfCmd</directive ></li >
1858+
1859+ <li ><strong >server certificate/key, or protocol/cipher
1860+ restrictions</strong >: directives which determine the server
1861+ certificate or key (<directive
1862+ module =" mod_ssl" >SSLCertificateKeyFile</directive > etc), cipher or
1863+ protocol restrictions (<directive
1864+ module =" mod_ssl" >SSLCipherSuite</directive > and <directive
1865+ module =" mod_ssl" >SSLProtocol</directive >)</li >
1866+ </ul >
1867+
1868+ This table illustrates whether an HTTP request will be blocked or
1869+ allowed when the virtual host configurations differ as described,
1870+ under each different policy setting:
1871+
1872+ <table border =" 1" style =" zebra" >
1873+ <columnspec ><column width =" .3" /><column width =" .2" /><column width =" .5" />
1874+ </columnspec >
1875+ <tr >
1876+ <th >Policy mode</th >
1877+ <th >Any VirtualHost mismatch</th >
1878+ <th >Client verification/<br />authentication settings</th >
1879+ <th >Server certificate/key, <br />or protocol/cipher restrictions</th >
1880+ </tr >
1881+ <tr >
1882+ <td ><code >strict</code ><td >blocked</td ><td >blocked</td ><td >blocked</td ></td >
1883+ </tr >
1884+ <tr >
1885+ <td ><code >secure</code ><td >allowed</td ><td >blocked</td ><td >blocked</td ></td >
1886+ </tr >
1887+ <tr >
1888+ <td ><code >authonly</code ><td >allowed</td ><td >blocked</td ><td >allowed</td ></td >
1889+ </tr >
1890+ <tr >
1891+ <td ><code >insecure</code ><td >allowed</td ><td >allowed</td ><td >allowed</td ></td >
1892+ </tr >
1893+ </table >
1894+ </p >
1895+ <example ><title >Example</title >
1896+ <highlight language =" config" >
1897+ SSLVHostSNIPolicy authonly
1898+ </highlight >
1899+
1900+ </example >
1901+ </usage >
1902+ </directivesynopsis >
1903+
18191904<directivesynopsis >
18201905<name >SSLProxyMachineCertificatePath</name >
18211906<description >Directory of PEM-encoded client certificates and keys to be used by the proxy</description >
0 commit comments