mirror of
https://github.com/apache/httpd.git
synced 2025-07-04 05:22:30 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1851673 13f79535-47bb-0310-9956-ffa450edef68
3203 lines
140 KiB
JavaScript
3203 lines
140 KiB
JavaScript
<?xml version="1.0"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
|
|
<!-- English Revision: 1817381:1851643 (outdated) -->
|
|
<!-- Spanish Translation: Daniel Ferradal <dferradal@apache.org> -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_ssl.xml.meta">
|
|
|
|
<name>mod_ssl</name>
|
|
<description>Criptografía fuerte usando una Capa de Sockets Seguros (Secure
|
|
Sockets Layer SSL) y protocolos de Seguridad de la Capa de Transporte
|
|
(Transport Layer Security TLS)</description>
|
|
<status>Extension</status>
|
|
<sourcefile>mod_ssl.c</sourcefile>
|
|
<identifier>ssl_module</identifier>
|
|
|
|
<summary>
|
|
<p>Este módulo ofrece soporte para SSL v3 y TLS v1.x para el Servidor Apache
|
|
HTTP. SSL v2 ya no está soportado.</p>
|
|
|
|
<p>Este módulo depende de <a href="http://www.openssl.org/">OpenSSL</a> para
|
|
proveer el motor de criptografía.</p>
|
|
|
|
<p>Se facilitan más detalles, discusión y ejemplos en la
|
|
<a href="../ssl/">documentación SSL</a>.</p>
|
|
</summary>
|
|
|
|
<section id="envvars"><title>Variables de Entorno</title>
|
|
|
|
<p>Este módulo puede ser configurado para proveer muchos elementos de información
|
|
SSL como variables de entorno adicionales para el espacio de nombres de SSI y
|
|
CGI. Esta información no se facilita por defecto por razones de rendimiento.
|
|
(Vea StdEnvVars de <directive>SSLOptions</directive> más adelante.) Las
|
|
variables generadas se listan en la tabla a continuación. Para
|
|
retrocompatibilidad la información también puede estar disponible bajo distintos
|
|
nombres. Vea el capítulo <a href="../ssl/ssl_compat.html">Compatibilidad</a>
|
|
para más detalles sobre las variables de compatibilidad.</p>
|
|
|
|
<table border="1">
|
|
<columnspec><column width=".3"/><column width=".2"/><column width=".5"/>
|
|
</columnspec>
|
|
<tr>
|
|
<th><a name="table3">Nommbre de Variable:</a></th>
|
|
<th>Valor Tipo:</th>
|
|
<th>Descripción:</th>
|
|
</tr>
|
|
<tr><td><code>HTTPS</code></td> <td>flag</td> <td>Se está usando HTTPS.</td></tr>
|
|
<tr><td><code>SSL_PROTOCOL</code></td> <td>string</td> <td>El protocolo SSL versión (SSLv3, TLSv1, TLSv1.1, TLSv1.2)</td></tr>
|
|
<tr><td><code>SSL_SESSION_ID</code></td> <td>string</td> <td>El id de sesión SSL codificado en hexadecimal</td></tr>
|
|
<tr><td><code>SSL_SESSION_RESUMED</code></td> <td>string</td> <td>Sesíón SSL inicial o reanudada. Nota: multiples peticiones pueden servirse a través de la misma sesión SSL (Inicial o Reanudada) si el KeepAlive de HTTP está en uso</td></tr>
|
|
<tr><td><code>SSL_SECURE_RENEG</code></td> <td>string</td> <td><code>true</code> si la renegociación segura está soportada, si no <code>false</code></td></tr>
|
|
<tr><td><code>SSL_CIPHER</code></td> <td>string</td> <td>El nombre de la especificación del cifrado</td></tr>
|
|
<tr><td><code>SSL_CIPHER_EXPORT</code></td> <td>string</td> <td><code>true</code> si el cifrado es un cifrado export</td></tr>
|
|
<tr><td><code>SSL_CIPHER_USEKEYSIZE</code></td> <td>number</td> <td>Número de bits de cifrado (en uso actualmente)</td></tr>
|
|
<tr><td><code>SSL_CIPHER_ALGKEYSIZE</code></td> <td>number</td> <td>Número de bits de cifrado (posibles)</td></tr>
|
|
<tr><td><code>SSL_COMPRESS_METHOD</code></td> <td>string</td> <td>Método de compresión SSL negociado</td></tr>
|
|
<tr><td><code>SSL_VERSION_INTERFACE</code></td> <td>string</td> <td>La versión de mod_ssl</td></tr>
|
|
<tr><td><code>SSL_VERSION_LIBRARY</code></td> <td>string</td> <td>La versión del programa OpenSSL</td></tr>
|
|
<tr><td><code>SSL_CLIENT_M_VERSION</code></td> <td>string</td> <td>La versión del certificado cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_M_SERIAL</code></td> <td>string</td> <td>El serial del certificado cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_S_DN</code></td> <td>string</td> <td>Sujeto DN en el certificado cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_S_DN_</code><em>x509</em></td> <td>string</td> <td>Componente del Sujeto DN cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_SAN_Email_</code><em>n</em></td> <td>string</td> <td>Entradas de extensión subjectAltName del certificado cliente del tipo rfc822Name</td></tr>
|
|
<tr><td><code>SSL_CLIENT_SAN_DNS_</code><em>n</em></td> <td>string</td> <td>Entradas de extensión subjectAltName del tipo dNSName</td></tr>
|
|
<tr><td><code>SSL_CLIENT_SAN_OTHER_msUPN_</code><em>n</em></td> <td>string</td> <td>Entradas de extensión subjectAltName del certificado cliente del tipo otherName, Microsoft User Principal Name form (OID 1.3.6.1.4.1.311.20.2.3)</td></tr>
|
|
<tr><td><code>SSL_CLIENT_I_DN</code></td> <td>string</td> <td>DN del firmante en el certificado cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_I_DN_</code><em>x509</em></td> <td>string</td> <td>Componente del DN en el firmante del certificado cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_V_START</code></td> <td>string</td> <td>Validez del certificado cliente (fecha de inicio)</td></tr>
|
|
<tr><td><code>SSL_CLIENT_V_END</code></td> <td>string</td> <td>Validez del certificado cliente (fecha fin)</td></tr>
|
|
<tr><td><code>SSL_CLIENT_V_REMAIN</code></td> <td>string</td> <td>Número de días hasta que el certificado cliente expira</td></tr>
|
|
<tr><td><code>SSL_CLIENT_A_SIG</code></td> <td>string</td> <td>Algoritmo usado para la firma del certificado cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_A_KEY</code></td> <td>string</td> <td>Algoritmo usado para la clave pública del certificado cliente.</td></tr>
|
|
<tr><td><code>SSL_CLIENT_CERT</code></td> <td>string</td> <td>Certificado cliente condificado en PEM</td></tr>
|
|
<tr><td><code>SSL_CLIENT_CERT_CHAIN_</code><em>n</em></td> <td>string</td> <td>Certificados codificados en PEM en la cadena de certificados cliente</td></tr>
|
|
<tr><td><code>SSL_CLIENT_CERT_RFC4523_CEA</code></td> <td>string</td> <td>Número de serie y distribuidor del certificado. El formato coincide con el CertificateExactAssertion en RFC4523</td></tr>
|
|
<tr><td><code>SSL_CLIENT_VERIFY</code></td> <td>string</td> <td><code>NONE</code>, <code>SUCCESS</code>, <code>GENEROUS</code> or <code>FAILED:</code><em>reason</em></td></tr>
|
|
<tr><td><code>SSL_SERVER_M_VERSION</code></td> <td>string</td> <td>La versión del certificado del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_M_SERIAL</code></td> <td>string</td> <td>El serial del certificado del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_S_DN</code></td> <td>string</td> <td>Nombre DN en el certificado del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_SAN_Email_</code><em>n</em></td> <td>string</td> <td>Entradas de extensión subjectAltName en el certificado del servidor del tipo rfc822Name</td></tr>
|
|
<tr><td><code>SSL_SERVER_SAN_DNS_</code><em>n</em></td> <td>string</td> <td>Entradas de Extensión subjectAltName del tipo Server dNSName del certificado del Servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_SAN_OTHER_dnsSRV_</code><em>n</em></td> <td>string</td> <td>Entradas de extensión subjectAltName del tipo otherName, forma SRVName (OID 1.3.6.1.5.5.7.8.7, RFC 4985) del certificado del servidor.</td></tr>
|
|
<tr><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td> <td>Componente del Sujeto DN del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_I_DN</code></td> <td>string</td> <td>DN del Firmante del certificado del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td> <td>Componente en el DN del firmante del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_V_START</code></td> <td>string</td> <td>Validez del certificado del servidor (fecha de inicio)</td></tr>
|
|
<tr><td><code>SSL_SERVER_V_END</code></td> <td>string</td> <td>Validez del certificado del servidor (fecha de fin)</td></tr>
|
|
<tr><td><code>SSL_SERVER_A_SIG</code></td> <td>string</td> <td>Algoritmo utilizado para la firma del certificado del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_A_KEY</code></td> <td>string</td> <td>Algoritmo utilizado para la clave pública del certificado del servidor</td></tr>
|
|
<tr><td><code>SSL_SERVER_CERT</code></td> <td>string</td> <td>Certificado del servidor codificado en PEM</td></tr>
|
|
<tr><td><code>SSL_SRP_USER</code></td> <td>string</td> <td>Nombre de usuario SRP</td></tr>
|
|
<tr><td><code>SSL_SRP_USERINFO</code></td> <td>string</td> <td>Información de usuario SRP</td></tr>
|
|
<tr><td><code>SSL_TLS_SNI</code></td> <td>string</td> <td>Contenido de la extensión TLS SNI (si se provee en el ClientHello)</td></tr>
|
|
</table>
|
|
|
|
<p><em>x509</em> especifica un componente de un DN X.509; uno entre
|
|
<code>C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email</code>. En Apache 2.2.0 en
|
|
posterior, <em>x509</em> también puede incluir un sufijo <code>_n</code>
|
|
numérico. Si el DN en cuestión contiene múltiples atributos del mismo
|
|
nombre, este sufijo se usa para un índice basado en ceros para seleccionar
|
|
un atributo en particular. Por ejemplo, donde el sujeto del DN del
|
|
certificado del servidor incluia dos atributos OU,
|
|
<code>SSL_SERVER_S_DN_OU_0</code> y
|
|
<code>SSL_SERVER_S_DN_OU_1</code> podría usarse para referenciar cada una.
|
|
Una variable sin un sufijo <code>_n</code> es equivalente a ese nombre con un
|
|
sufijo <code>_0</code>; el primer (y único) atributo.
|
|
Cuando la tabla del entorno se llena usando la opción <code>StdEnvVars</code>
|
|
de la directiva <directive module="mod_ssl">SSLOptions</directive>, el primer
|
|
(o único) atributo de cualquier DN se añade sólo bajo un nombre sin sufijo;
|
|
p. ej. no se añaden entradas con sufijo <code>_0</code>.</p>
|
|
|
|
<p>En httpd 2.5.0 y posterior, se puede añadir un sufijo <em>_RAW</em> a
|
|
<em>x509</em> en un componente DN para suprimir la conversión del valor
|
|
del atributo a UTF-8. Esto se debe colocar después del sufijo de indice (si lo
|
|
hay). Por ejemplo, se podría usar <code>SSL_SERVER_S_DN_OU_RAW</code> o
|
|
<code>SSL_SERVER_S_DN_OU_0_RAW</code>.</p>
|
|
|
|
<p>El formato de las variables <em>*_DN</em> ha cambiado en Apache HTTPD
|
|
2.3.11. Vea la opción <code>LegacyDNStringFormat</code> para
|
|
<directive module="mod_ssl">SSLOptions</directive> para más detalles.</p>
|
|
|
|
<p><code>SSL_CLIENT_V_REMAIN</code> sólo está disponible en la versión 2.1 y
|
|
posterior.</p>
|
|
|
|
<p>Se puede usar varias variables de entorno adicionales con expresiones en
|
|
<directive>SSLRequire</directive>, o en formatos de log personalizados:</p>
|
|
|
|
<note><pre>HTTP_USER_AGENT PATH_INFO AUTH_TYPE
|
|
HTTP_REFERER QUERY_STRING SERVER_SOFTWARE
|
|
HTTP_COOKIE REMOTE_HOST API_VERSION
|
|
HTTP_FORWARDED REMOTE_IDENT TIME_YEAR
|
|
HTTP_HOST IS_SUBREQ TIME_MON
|
|
HTTP_PROXY_CONNECTION DOCUMENT_ROOT TIME_DAY
|
|
HTTP_ACCEPT SERVER_ADMIN TIME_HOUR
|
|
THE_REQUEST SERVER_NAME TIME_MIN
|
|
REQUEST_FILENAME SERVER_PORT TIME_SEC
|
|
REQUEST_METHOD SERVER_PROTOCOL TIME_WDAY
|
|
REQUEST_SCHEME REMOTE_ADDR TIME
|
|
REQUEST_URI REMOTE_USER</pre></note>
|
|
|
|
<p>En estos contextos, también se pueden usar dos formatos especiales:</p>
|
|
|
|
<dl>
|
|
<dt><code>ENV:<em>nombredevariable</em></code></dt>
|
|
<dd>Esto se rellenará al valor de la variable de entorno estándar
|
|
<em>nombredevariable</em>.</dd>
|
|
|
|
<dt><code>HTTP:<em>nombredecabecera</em></code></dt>
|
|
<dd>Esto se rellenará con el valor de la cabecera de solicitud con el nombre
|
|
<em>nombredecabecera</em>.</dd>
|
|
</dl>
|
|
|
|
</section>
|
|
|
|
<section id="logformats"><title>Formatos de Log Personalizados</title>
|
|
|
|
<p>Cuando se compila <module>mod_ssl</module> en Apache o al menos se carga (en
|
|
situación de DSO) existen funciones adicionales para el
|
|
<a href="mod_log_config.html#formats">Formatos de Log Personalizados</a> de
|
|
<module>mod_log_config</module>. Primero hay una función de extensión de formato
|
|
adicional ``<code>%{</code><em>varname</em><code>}x</code>'' que puede usarse
|
|
para extender cualquier variable facilitada por cualquier módulo, especialmente
|
|
aquellas que son facilitadas por mod_ssl que puede encontrar en la tabla de más
|
|
arriba.</p>
|
|
<p>
|
|
|
|
Para retro compatibilidad adicionalmente se facilita una función de formato de
|
|
criptografía ``<code>%{</code><em>nombre</em><code>}c</code>''. Información sobre
|
|
esta función se facilita en capítulo de <a
|
|
href="../ssl/ssl_compat.html">Compatibilidad</a>.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
CustomLog "logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
|
|
</highlight>
|
|
</example>
|
|
<p>Estos formatos incluso funcionan sin la opción de configuración
|
|
<code>StdEnvVars</code> de la directiva
|
|
<directive module="mod_ssl">SSLOptions</directive>.</p>
|
|
</section>
|
|
|
|
<section id="notes"><title>Notas de Solicitud</title>
|
|
|
|
<p><module>mod_ssl</module> configura "notas" para la petición que pueden
|
|
usarse en el registro de logs con la cadena de caracteres
|
|
<code>%{<em>nombre</em>}n</code> en <module>mod_log_config</module>.</p>
|
|
|
|
<p>A continuación se indican las notas soportadas:</p>
|
|
|
|
<dl>
|
|
<dt><code>ssl-access-forbidden</code></dt>
|
|
<dd>Esta nota se configura al valor <code>1</code> si el acceso fue
|
|
denegado debido a una directiva <directive>SSLRequire</directive> o
|
|
<directive>SSLRequireSSL</directive>.</dd>
|
|
|
|
<dt><code>ssl-secure-reneg</code></dt>
|
|
<dd>Si se compila <module>mod_ssl</module> con una versión de OpenSSL que
|
|
soporta la extensión de renegociación segura, esta nota se configura con el
|
|
valor <code>1</code> si se usa SSL para la conexión actual y el cliente
|
|
también soporta la extensión de renegociación segura. Si el cliente no
|
|
soporta la extensión de renegociación segura, esta nota se configura con el valor
|
|
<code>0</code>.
|
|
Si se compila <module>mod_ssl</module> con una versión de OpenSSL que no
|
|
soporta renegociación segura, o si SSL no se usa en la conexión actual, esta
|
|
nota no se configura.</dd>
|
|
</dl>
|
|
|
|
</section>
|
|
|
|
<section id="expressionparser">
|
|
<title>Extensión Intérprete de Expresiones</title>
|
|
|
|
<p>Cuando se compila <module>mod_ssl</module> en Apache o se carga
|
|
(bajo situación DSO) cualquier <a name="envvars">variable</a>
|
|
facilitada por <module>mod_ssl</module> puede usarse en expresiones para el
|
|
<a href="../expr.html">Intérprete de Expresiones ap_expr</a>.
|
|
Se puede hacer referencia a las variables usando la sintaxis
|
|
``<code>%{</code><em>varname</em><code>}</code>''. Comenzando con la versión
|
|
2.4.18 uno también puede usar el estilo de sintaxis de
|
|
<module>mod_rewrite</module>
|
|
``<code>%{SSL:</code><em>nombredevariable</em><code>}</code>'' o el estilo de
|
|
sintaxis de la función
|
|
``<code>ssl(</code><em>nombredevariable</em><code>)</code>''.</p>
|
|
|
|
<example><title>Ejemplo (usando <module>mod_headers</module>)</title>
|
|
<highlight language="config">
|
|
Header set X-SSL-PROTOCOL "expr=%{SSL_PROTOCOL}"
|
|
Header set X-SSL-CIPHER "expr=%{SSL:SSL_CIPHER}"
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Esta característica funciona incluso sin configurar la opción
|
|
<code>StdEnvVars</code> de la directiva
|
|
<directive module="mod_ssl">SSLOptions</directive>.</p>
|
|
</section>
|
|
|
|
<section id="authzproviders"><title>Proveedores de Autorización para su uso con
|
|
Require</title>
|
|
<p><module>mod_ssl</module> facilita unos pocos proveedores de autenticación
|
|
para usarse con la directiva <directive module="mod_authz_core">Require</directive>
|
|
de <module>mod_authz_core</module>.</p>
|
|
|
|
<section id="reqssl"><title>Require ssl</title>
|
|
<p>El proveedor de <code>ssl</code> deniega el acceso si la conexión no está
|
|
encriptada con SSL. Esto es similar a la directiva
|
|
<directive>SSLRequireSSL</directive>.</p>
|
|
<highlight language="config">
|
|
Require ssl
|
|
</highlight>
|
|
</section>
|
|
|
|
<section id="reqverifyclient"><title>Require ssl-verify-client</title>
|
|
<p>El proveedor de <code>ssl</code> permite acceso si el usuario se autentica
|
|
con un certificado cliente válido. Esto sólo es útil si se está usando
|
|
<code>SSLVerifyClient optional</code>.</p>
|
|
|
|
<p>El siguiente ejemplo permite acceso si el usuario se autentica o bien
|
|
con certificado cliente o con usuario y contraseña.</p>
|
|
<highlight language="config">
|
|
Require ssl-verify-client
|
|
Require valid-user
|
|
</highlight>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLPassPhraseDialog</name>
|
|
<description>Tipo de díalogo de solicitud de contraseña para claves privadas
|
|
encriptadas</description>
|
|
<syntax>SSLPassPhraseDialog <em>tipo</em></syntax>
|
|
<default>SSLPassPhraseDialog builtin</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Cuando Apache arranca tiene que leer varios ficheros Certificado (vea
|
|
<directive module="mod_ssl">SSLCertificateFile</directive>) y Clave Privada
|
|
(vea
|
|
<directive module="mod_ssl">SSLCertificateKeyFile</directive>) de los servidores
|
|
virtuales que tienen SSL activado. Por razones de seguridad los ficheros
|
|
de clave privada están generalmente encriptados, mod_ssl necesita preguntar al
|
|
administrador por la contraseña para desencriptar esos ficheros. Esta solicitud
|
|
puede hacerse de dos maneras que se pueden configurar por
|
|
<em>tipo</em>:</p>
|
|
<ul>
|
|
<li><code>builtin</code>
|
|
<p>
|
|
Este es el método por defecto donde una ventana de terminal interactiva
|
|
aparece al inicio antes que Apache pase a segundo plano. Aquí un
|
|
administrador tiene que introducir manualmente la contraseña para cada
|
|
fichero de Clave Privada Encriptada. Puesto que puede haber muchos
|
|
hosts virtuales configurados con SSL, se usa el siguiente esquema de
|
|
reutilización para minimizar el número de veces que se pide la contraseña:
|
|
Cuanto un fichero de clave privada está encriptado, se intentará usar
|
|
todas las Contraseñas conocidas (al principio no hay ninguna, por supuesto).
|
|
Si una de esas contraseñas conocidas funciona no se abre ventana de diálogo
|
|
para este fichero de clave privada en particular. Si ninguna funciona,
|
|
se vuelve a solicitar la contraseña en la terminal y se recuerda para las
|
|
siguientes (donde quizás se pueden reutilizar).</p>
|
|
<p>
|
|
Este esquema permite a mod_ssl ser flexible al máximo (porque para N
|
|
ficheros de Clave Privada Encriptados <em>usted puede</em> usar N
|
|
contraseñas diferentes - pero entonces tiene que introducir todas ellas, por
|
|
supuesto) al mismo tiempo que se minimizan las solicitudes de contraseña
|
|
por terminal (p.ej. cuando usa una sola contraseña para todos los N ficheros
|
|
de Clave Privada esta contraseña sólo se pide una vez).</p></li>
|
|
|
|
<li><code>|/path/to/program [args...]</code>
|
|
|
|
<p>Este modo permite que se use un programa externo que actúa como tubería a
|
|
un dispositivo de entrada en particular; al programa se le envía la
|
|
solicitud estándar de texto que se usa para el modo <code>builtin</code> en
|
|
<code>stdin</code>, y se espera que escriba cadenas de caracteres de
|
|
contraseñas en <code>stdout</code>. Si se necesitan varias contraseñas (o si
|
|
se introduce una contraseña incorrecta), se escribirán solicitudes de
|
|
contraseña adicionales y se tendrá que devolver más contraseñas a través
|
|
de dicho programa.</p></li>
|
|
|
|
<li><code>exec:/path/to/program</code>
|
|
<p>
|
|
Aquí se configura un programa externo que se lanza en el arranque para cada
|
|
uno de los ficheros de Clave Privada encriptados. Se le llama con un sólo
|
|
parámetro, una cadena de caracteres de la forma
|
|
``<code>servername:portnumber:index</code>'' (cuando <code>index</code> es
|
|
un número basado en una secuencia de ceros), que indica para qué servidor,
|
|
puerto TCP y número de certificado debe imprimir la Contraseña
|
|
correspondiente a <code>stdout</code>. La intención es que este programa
|
|
externo primero ejecuta comprobaciones de seguridad para asegurar que el
|
|
sistema no se ha visto comprometido por un atacante, y sólo cuando estas
|
|
comprobaciones se realizan satisfactoriamente entonces facilita la
|
|
Contraseña.</p>
|
|
|
|
<p>
|
|
Ambas comprobaciones de seguridad y el método en que se determina la
|
|
contraseña, puede ser tan complejo como usted desee. Mod_ssl sólo define
|
|
el interfaz: un programa ejecutable que provee la contraseña en
|
|
<code>stdout</code>. Ni más y ni menos. Así que, si usted es realmente
|
|
paranoico con la seguridad, este es su interfaz. Cualquier otra cosa se debe
|
|
dejar como un trabajo para el administrador, porque los requerimientos de
|
|
seguridad local son muy diferentes.</p>
|
|
|
|
<p>
|
|
El algoritmo de reutilización descrito previamente se usa aquí también. En
|
|
otras palabras: se llama sólo una vez al programa externo cuando hay una
|
|
única contraseña.</p></li>
|
|
</ul>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLPassPhraseDialog "exec:/usr/local/apache/sbin/pp-filter"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLRandomSeed</name>
|
|
<description>Fuente de generación de semilla pseudoaleatoria de números
|
|
(PRNG)</description>
|
|
<syntax>SSLRandomSeed <em>contexto</em> <em>fuente</em>
|
|
[<em>bytes</em>]</syntax>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esto configura una o más fuentes de generación de semilla pseudoaleatoria de
|
|
números "Pseudo Random Number Generator (PRNG)" en OpenSSL en el arranque
|
|
(<em>contexto</em> es <code>startup</code>) y/o justo antes de que se
|
|
establezca una nueva conexión SSL
|
|
(<em>contexto</em> es <code>connect</code>). Esta directiva sólo se puede usar
|
|
en el contexto global de configuración del servidor porque PRNG es una
|
|
característica global.</p>
|
|
<p>
|
|
Las siguientes variante de <em>fuente</em> están disponibles:</p>
|
|
<ul>
|
|
<li><code>builtin</code>
|
|
<p>Esta es siempre la fuente de generación de semilla que está siempre
|
|
disponible. Usa el mínimo de ciclos de CPU en tiempo real así que se puede
|
|
usar siempre sin contratiempos. La fuente utilizada para la generación de
|
|
semilla de PRNG contiene la hora actual, el id de proceso actual y
|
|
(cuando es aplicable) un extracto de 1KB escogido aleatoriamente de la
|
|
estructura de scoreboard de Apache. La pega es que no es realmente una
|
|
fuente muy compleja y en el momento del arranque (cuando el scoreboard
|
|
todavía no está disponible) esta fuente sólo produce unos pocos bytes de
|
|
entropía. Así que usted debería, al menos en el arranque, usar una fuente
|
|
adicional de generación de semilla.</p></li>
|
|
|
|
<li><code>file:/ruta/hacia/la/fuente</code>
|
|
<p>
|
|
Esta variante usa un fichero externo <code>/ruta/hacia/la/fuente</code> con
|
|
la fuente de generación de semilla para PRNG. Cuando se especifica
|
|
<em>bytes</em>, sólo los primeros <em>bytes</em> del número de bytes del
|
|
fichero forman la entropía (y <em>bytes</em> se da a
|
|
<code>/ruta/hacia/la/fuente</code> como el primer parámetro). Cuando
|
|
no se especifica <em>bytes</em> el fichero al completo forma la entropía
|
|
(y <code>0</code> se da a <code>/ruta/hacia/la/fuente</code> como primer
|
|
parámetro). Use esto especialmente en el arranque, por ejemplo con
|
|
dispositivos disponibles <code>/dev/random</code> y/o
|
|
<code>/dev/urandom</code> (que generalmente existen en derivados de Unix
|
|
modernos como FreeBSD y Linux).</p>
|
|
<p>
|
|
<em>Pero tenga cuidado</em>: Generalmente <code>/dev/random</code> facilita
|
|
sólo tantos datos de entropía como tiene en ese momento, p.ej. cuando solicita
|
|
512 bytes de entropía, pero el dispositivo sólo tiene 100 bytes disponibles
|
|
dos cosas pasan: En algunas plataformas recibe sólo 100 bytes mientras que
|
|
en otras plataformas la lectura se bloquea hasta que hay suficientes bytes
|
|
disponibles (lo cual puede llevar bastante tiempo). Aquí usar un
|
|
<code>/dev/urandom</code> existente es mejor, porque nunca bloquea y porque
|
|
facilita la cantidad de datos solicitada. La pega es que la calidad de los
|
|
datos recibidos puede que no sea la mejor.</p></li>
|
|
|
|
<li><code>exec:/ruta/al/programa</code>
|
|
<p>
|
|
Esta variante usa un ejecutable externo
|
|
<code>/ruta/al/programa</code> como la fuente de generación de semilla de
|
|
PRNG. Cuando se especifica <em>bytes</em>, sólo los primeros
|
|
<em>bytes</em> del número de bytes de su contenido de <code>stdout</code>
|
|
forman la entropía. Cuando no se especifica <em>bytes</em>, el total de los
|
|
datos producidos en <code>stdout</code> forman la entropía. Use esto sólo
|
|
en el tiempo de arranque cuando necesita una generación de semilla muy
|
|
compleja con la ayuda de un programa externo (como en el
|
|
ejemplo de más arriba con la utilidad <code>truerand</code> que puede
|
|
encontrar en la distribución de mod_ssl que está basada en la librería
|
|
<em>truerand</em> de AT&T). Usar esto en contexto de conexión
|
|
ralentiza al servidor de manera dramática, por supuesto. Así que debería
|
|
evitar programas externos en ese contexto. </p></li>
|
|
|
|
<li><code>egd:/ruta/al/egd-socket</code> (Sólo Unix)
|
|
<p>
|
|
Esta variante usa el socket de dominio Unix del Demonio de Recolección de
|
|
Entropía externo (Entropy Gathering Daemon (EGD)) (vea <a
|
|
href="http://www.lothar.com/tech/crypto/">http://www.lothar.com/tech
|
|
/crypto/</a>) para generar semilla de PRNG. Use esto si no hay un
|
|
dispositivo de generación de datos aleatorios en su sistema.</p></li>
|
|
</ul>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLRandomSeed startup builtin
|
|
SSLRandomSeed startup "file:/dev/random"
|
|
SSLRandomSeed startup "file:/dev/urandom" 1024
|
|
SSLRandomSeed startup "exec:/usr/local/bin/truerand" 16
|
|
SSLRandomSeed connect builtin
|
|
SSLRandomSeed connect "file:/dev/random"
|
|
SSLRandomSeed connect "file:/dev/urandom" 1024
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLSessionCache</name>
|
|
<description>Tipo de la Caché global/interproceso de la sesión SSL</description>
|
|
<syntax>SSLSessionCache <em>tipo</em></syntax>
|
|
<default>SSLSessionCache none</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esto configura el tipo de almacenamiento para la Cache global/interproceso de
|
|
la sesión SSL. Esta cache es una característica opcional que acelera el
|
|
processamiento de peticiones en paralelo. Para peticiones con el mismo
|
|
proceso de servidor (a través de keep-alive HTTP), OpenSSL ya cachea la
|
|
información de sesión de SSL localmente. Pero puesto que los clientes modernos
|
|
solicitan imágenes y otros datos a través de peticiones en paralelo
|
|
(generalmente hasta cuatro peticiones en paralelo es lo típico) esas peticiones
|
|
se sirven por procesos de servidor <em>diferentes</em>. Aquí la cache de
|
|
inter-proceso ayuda para evitar saludos de sesión SSL innecesarios.</p>
|
|
<p>
|
|
|
|
Los cinto <em>tipos</em> de almacenamientos siguientes están soportados:</p>
|
|
<ul>
|
|
<li><code>none</code>
|
|
|
|
<p>Esto desactiva la Cache de Sesión de interproceso/global. Esto
|
|
repercutirá en un descenso de la velocidad notable y puede causar problemas
|
|
con ciertos navegadores, particularmente si están activados los certificados
|
|
cliente. Esta configuración no se recomienda.</p></li>
|
|
|
|
<li><code>nonenotnull</code>
|
|
|
|
<p>Esto sólo desactiva la Cache de Sesión de interproceso/global. Aun así no
|
|
fuerza a OpenSSL a enviar ID de sesión no-nula para adaptarse a clientes
|
|
que requieren una.</p></li>
|
|
|
|
<li><code>dbm:/ruta/al/ficherodedatos</code>
|
|
|
|
<p>Esto hace uso del fichero de hash DBM en el disco local para sincronizar
|
|
las caches de memoria del OpenSSL de los procesos del servidor. Esta caché
|
|
de sesión puede tener problemas de fiabilidad cuando hay carga alta. Para
|
|
usarla, asegúrese de que
|
|
<module>mod_socache_dbm</module> está cargado.</p></li>
|
|
|
|
<li><code>shmcb:/ruta/al/ficherodedatos</code>[<code>(</code><em>tamaño</em><code>)</code>]
|
|
|
|
<p>Esto hace uso del búfer cíclico de alto rendimiento
|
|
(approx. <em>tamaño</em> bytes de tamaño) dentro de un segmento de memoria
|
|
compartida en RAM (establecida con <code>/ruta/al/ficherodedatos</code>)
|
|
para sincronizar las caches de memoria del OpenSSL local de los procesos del
|
|
servidor. Esta es la caché de sesión recomendada. Para usarla, asegúrese de
|
|
que <module>mod_socache_shmcb</module> está cargado.</p></li>
|
|
|
|
<li><code>dc:UNIX:/ruta/al/socket</code>
|
|
|
|
<p>Esto hace uso de las librerias de cacheo <a
|
|
href="http://distcache.sourceforge.net/">distcache</a>. El parámetro debería
|
|
especificar la ubicación del servidor o proxy para ser usado con distcache
|
|
usando sintaxis de dirección; por ejemplo,
|
|
<code>UNIX:/ruta/al/socket</code> especifica un socket de dominio UNIX
|
|
(típicamente un proxy dc_client local);
|
|
<code>IP:server.example.com:9001</code> especifica una dirección IP. Para
|
|
usar esto, asegúrese de que <module>mod_socache_dc</module> está
|
|
cargado.</p></li>
|
|
|
|
</ul>
|
|
|
|
<example><title>Ejemplos</title>
|
|
<highlight language="config">
|
|
SSLSessionCache "dbm:/usr/local/apache/logs/ssl_gcache_data"
|
|
SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_gcache_data(512000)"
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>El mutex <code>ssl-cache</code> se usa para serializar el acceso a la cache
|
|
de sesión para prevenir corrupción. Este mutex puede configurarse usando la
|
|
directiva <directive module="core">Mutex</directive>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLSessionCacheTimeout</name>
|
|
<description>Número de segundos antes de que la sesión SSL expira
|
|
en la Cache de Sesión</description>
|
|
<syntax>SSLSessionCacheTimeout <em>segundos</em></syntax>
|
|
<default>SSLSessionCacheTimeout 300</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Aplica también al RFC 5077 de reanudación de sesión en
|
|
Apache 2.4.10 o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el tiemplo límite en segundos para la información
|
|
guardada en la caché de sesión SSL de interproceso/global, la caché de memoria
|
|
interna de OpenSSL y para las sesiones reanudadas por la reanudación de sesión
|
|
de TLS (RFC 5077). Puede ponerse hasta un mínimo de 15 para hacer pruebas, pero
|
|
debería configurarse con valores como 300 en entornos funcionales.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLSessionCacheTimeout 600
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLEngine</name>
|
|
<description>Interruptor de Activación del motor SSL</description>
|
|
<syntax>SSLEngine on|off|optional|addr[:port] [addr[:port]] ...</syntax>
|
|
<default>SSLEngine off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>El parámetro <code>addr:port</code> está disponible en Apache
|
|
2.4.30 y posterior.</compatibility>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva sirve para activar o desactivar el uso del motor del protocolo
|
|
SSL/TLS. Los valores 'on', 'off' y 'optional' deberían usarse dentro de una
|
|
sección <directive module="core" type="section">VirtualHost</directive> para
|
|
activar SSL/TLS para un host virtual. Por defecto el motor de SSL/TLS está
|
|
deshabilitado para ambos el servidor principal y todos los host virtuales
|
|
configurados.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
<VirtualHost _default_:443>
|
|
SSLEngine on
|
|
#...
|
|
</VirtualHost>
|
|
</highlight>
|
|
</example>
|
|
<p>Se deberían usar los valores <code>addr:port</code> en la configuración
|
|
global del servidor para activar el motor del Protocolo SSL/TLS para
|
|
<em>todos</em> los
|
|
<directive module="core" type="section">VirtualHost</directive>
|
|
que coincidan con una de las direcciones de la lista.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLEngine *:443
|
|
<VirtualHost *:443>
|
|
#...
|
|
</VirtualHost>
|
|
</highlight>
|
|
</example>
|
|
<p><directive>SSLEngine</directive> puede ser configurado a
|
|
<code>optional</code>: esto activa el soporte de
|
|
<a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>.
|
|
</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLFIPS</name>
|
|
<description>Interruptor del modo SSL FIPS</description>
|
|
<syntax>SSLFIPS on|off</syntax>
|
|
<default>SSLFIPS off</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva activa o desactiva el uso de FIPS_mode en la librería SSL. Esto
|
|
debe ponerse en el contexto de la configuración global del servidor y no puede
|
|
configurarse con otras configuraciones que especifiquen lo contrario (SSLFIPS on
|
|
seguido de SSLFIPS off o similar). Este modo se aplica a todas las operaciones
|
|
de la librería SSL.
|
|
</p>
|
|
|
|
<p>
|
|
Si httpd fuera compilado contra una librería SSL que no soporta FIPS_mode,
|
|
<code>SSLFIPS on</code> fallará. Vea el documento de Políticas de Seguridad
|
|
FIPS 140-2 de su proveedor de librería SSL para requerimientos específicos para
|
|
usar mod_ssl en un modo de operación aprobado; tenga en cuenta que mod_ssl
|
|
en sí mismo no está validado, pero puede ser descrito como un módulo
|
|
validado de criptofrafía FIPS 140-2, cuando todos los componentes son montados
|
|
y gestionados bajo las reglas impuestas por la Política de Seguridad aplicable.
|
|
</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProtocol</name>
|
|
<description>Configura versiones de protocolo SSL/TLS utilizables</description>
|
|
<syntax>SSLProtocol [+|-]<em>protocol</em> ...</syntax>
|
|
<default>SSLProtocol all -SSLv3</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Se puede usar esta directiva para controlar que versiones del protocolo SSL/TLS
|
|
serán aceptadas en las nuevas conexiones.</p>
|
|
<p>
|
|
Los <em>protocolos</em> disponibles (no sensibles a mayúsculas) son:</p>
|
|
<ul>
|
|
<li><code>SSLv3</code>
|
|
<p>
|
|
Este es el protocolo de Secure Sockets Layer (SSL), version 3.0, de la
|
|
Corporación Netscape. Es el sucesor a SSLv2 y el predecesor de TLSv1, pero
|
|
se ha marcado ya como obsoleto en
|
|
<a href="http://www.ietf.org/rfc/rfc7568.txt">RFC 7568</a>.</p></li>
|
|
|
|
<li><code>TLSv1</code>
|
|
<p>
|
|
Este es el protocolo Transport Layer Security (TLS), versión 1.0.
|
|
Es el sucesor de SSLv3 y está definido en
|
|
<a href="http://www.ietf.org/rfc/rfc2246.txt">RFC 2246</a>.
|
|
Está soportado por casi cualquier cliente.</p></li>
|
|
|
|
<li><code>TLSv1.1</code> (cuando se usa OpenSSL 1.0.1 y posterior)
|
|
<p>
|
|
Una revisión del protocolo TLS 1.0, tal y como se define en
|
|
<a href="http://www.ietf.org/rfc/rfc4346.txt">RFC 4346</a>.</p></li>
|
|
|
|
<li><code>TLSv1.2</code> (cuando se usa OpenSSL 1.0.1 y posterior)
|
|
<p>
|
|
Una revisión del protocolo TLS 1.1, tal y como se define en
|
|
<a href="http://www.ietf.org/rfc/rfc5246.txt">RFC 5246</a>.</p></li>
|
|
|
|
<li><code>all</code>
|
|
<p>
|
|
Esto es un atajo para ``<code>+SSLv3 +TLSv1</code>'' o
|
|
- cuando se usa OpenSSL 1.0.1 y posterior -
|
|
``<code>+SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2</code>'', respectivamente
|
|
(excepto para versiones de OpenSSL compiladas con la opción de configuración
|
|
``no-ssl3'', donde <code>all</code> no incluye <code>+SSLv3</code>).
|
|
</p></li>
|
|
</ul>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProtocol TLSv1
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCipherSuite</name>
|
|
<description>Conjunto de Cifrados disponibles para negociación en el saludo SSL
|
|
</description>
|
|
<syntax>SSLCipherSuite <em>especificación-de-cifrado</em></syntax>
|
|
<default>SSLCipherSuite DEFAULT (depende de la versión de OpenSSL)</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context>
|
|
<context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta compleja directiva usa una cadena de <em>cifrados</em> separados por comas
|
|
que consiste en especificaciones de cifrado OpenSSL para configurar el conjunto
|
|
de cifrados que se le permite negociar al cliente en la fase de saludo SSL.
|
|
Tenga en cuenta que esta directiva se puede usar en contexto de servidor y de
|
|
directorio. En contexto de servidor aplica el saludo estándar de SSL cuando se
|
|
establece una conexión. En contexto directorio fuerza una renegociación SSL con
|
|
el juego de cifrados después de que la solicitud HTTP ha sido leída pero antes de
|
|
que se envíe la respuesta.</p>
|
|
<p>
|
|
Una especificación de cifrado SSL en <em>especificación-de-cifrado</em> se compone de 4
|
|
atributos principales más unos cuantos menores extra:</p>
|
|
<ul>
|
|
<li><em>Algoritmo de Intercambio de Clave</em>:<br />
|
|
RSA, Diffie-Hellman, Elliptic Curve Diffie-Hellman, Secure Remote Password
|
|
</li>
|
|
<li><em>Algoritmo de Autenticación</em>:<br />
|
|
RSA, Diffie-Hellman, DSS, ECDSA, or none.
|
|
</li>
|
|
<li><em>Algoritmo de Cifrado/Encriptación</em>:<br />
|
|
AES, DES, Triple-DES, RC4, RC2, IDEA, etc.
|
|
</li>
|
|
<li><em>Algoritmo de Resúmen de MAC</em>:<br />
|
|
MD5, SHA or SHA1, SHA256, SHA384.
|
|
</li>
|
|
</ul>
|
|
|
|
<p>Un cifrado SSL puede ser un cifrado export. Los cifrados SSLv2 ya no están
|
|
soportados. Para especificar qué cifrados usar, uno puede especificar todos
|
|
los cifrados a utilizar, de uno en uno, o puede usar pseudónimos para
|
|
especificar la preferencia y orden de los cifrados (vea <a href="#table1">Tabla
|
|
1</a>). La lista actual de cifrados y pseudónimos depende de la versión openssl
|
|
utilizada. Versiones más modernas de openssl pueden incluir cifrados
|
|
adicionales.</p>
|
|
|
|
<table border="1">
|
|
<columnspec><column width=".5"/><column width=".5"/></columnspec>
|
|
<tr><th><a name="table1">Tag</a></th> <th>Description</th></tr>
|
|
<tr><td colspan="2"><em>Algoritmo de Intercambio de Clave:</em></td></tr>
|
|
<tr><td><code>kRSA</code></td> <td>RSA key exchange</td></tr>
|
|
<tr><td><code>kDHr</code></td> <td>Diffie-Hellman key exchange with RSA key</td></tr>
|
|
<tr><td><code>kDHd</code></td> <td>Diffie-Hellman key exchange with DSA key</td></tr>
|
|
<tr><td><code>kEDH</code></td> <td>Ephemeral (temp.key) Diffie-Hellman key exchange (no cert)</td> </tr>
|
|
<tr><td><code>kSRP</code></td> <td>Secure Remote Password (SRP) key exchange</td></tr>
|
|
<tr><td colspan="2"><em>Algoritmo de Autenticación:</em></td></tr>
|
|
<tr><td><code>aNULL</code></td> <td>No authentication</td></tr>
|
|
<tr><td><code>aRSA</code></td> <td>RSA authentication</td></tr>
|
|
<tr><td><code>aDSS</code></td> <td>DSS authentication</td> </tr>
|
|
<tr><td><code>aDH</code></td> <td>Diffie-Hellman authentication</td></tr>
|
|
<tr><td colspan="2"><em>Algoritmo de Codificación de Cifrado:</em></td></tr>
|
|
<tr><td><code>eNULL</code></td> <td>No encryption</td> </tr>
|
|
<tr><td><code>NULL</code></td> <td>alias for eNULL</td> </tr>
|
|
<tr><td><code>AES</code></td> <td>AES encryption</td> </tr>
|
|
<tr><td><code>DES</code></td> <td>DES encryption</td> </tr>
|
|
<tr><td><code>3DES</code></td> <td>Triple-DES encryption</td> </tr>
|
|
<tr><td><code>RC4</code></td> <td>RC4 encryption</td> </tr>
|
|
<tr><td><code>RC2</code></td> <td>RC2 encryption</td> </tr>
|
|
<tr><td><code>IDEA</code></td> <td>IDEA encryption</td> </tr>
|
|
<tr><td colspan="2"><em>Algoritmo de Resumen de MAC</em>:</td></tr>
|
|
<tr><td><code>MD5</code></td> <td>MD5 hash function</td></tr>
|
|
<tr><td><code>SHA1</code></td> <td>SHA1 hash function</td></tr>
|
|
<tr><td><code>SHA</code></td> <td>alias for SHA1</td> </tr>
|
|
<tr><td><code>SHA256</code></td> <td>SHA256 hash function</td> </tr>
|
|
<tr><td><code>SHA384</code></td> <td>SHA384 hash function</td> </tr>
|
|
<tr><td colspan="2"><em>Aliases:</em></td></tr>
|
|
<tr><td><code>SSLv3</code></td> <td>all SSL version 3.0 ciphers</td> </tr>
|
|
<tr><td><code>TLSv1</code></td> <td>all TLS version 1.0 ciphers</td> </tr>
|
|
<tr><td><code>EXP</code></td> <td>all export ciphers</td> </tr>
|
|
<tr><td><code>EXPORT40</code></td> <td>all 40-bit export ciphers only</td> </tr>
|
|
<tr><td><code>EXPORT56</code></td> <td>all 56-bit export ciphers only</td> </tr>
|
|
<tr><td><code>LOW</code></td> <td>all low strength ciphers (no export, single DES)</td></tr>
|
|
<tr><td><code>MEDIUM</code></td> <td>all ciphers with 128 bit encryption</td> </tr>
|
|
<tr><td><code>HIGH</code></td> <td>all ciphers using Triple-DES</td> </tr>
|
|
<tr><td><code>RSA</code></td> <td>all ciphers using RSA key exchange</td> </tr>
|
|
<tr><td><code>DH</code></td> <td>all ciphers using Diffie-Hellman key exchange</td> </tr>
|
|
<tr><td><code>EDH</code></td> <td>all ciphers using Ephemeral Diffie-Hellman key exchange</td> </tr>
|
|
<tr><td><code>ECDH</code></td> <td>Elliptic Curve Diffie-Hellman key exchange</td> </tr>
|
|
<tr><td><code>ADH</code></td> <td>all ciphers using Anonymous Diffie-Hellman key exchange</td> </tr>
|
|
<tr><td><code>AECDH</code></td> <td>all ciphers using Anonymous Elliptic Curve Diffie-Hellman key exchange</td> </tr>
|
|
<tr><td><code>SRP</code></td> <td>all ciphers using Secure Remote Password (SRP) key exchange</td> </tr>
|
|
<tr><td><code>DSS</code></td> <td>all ciphers using DSS authentication</td> </tr>
|
|
<tr><td><code>ECDSA</code></td> <td>all ciphers using ECDSA authentication</td> </tr>
|
|
<tr><td><code>aNULL</code></td> <td>all ciphers using no authentication</td> </tr>
|
|
</table>
|
|
|
|
<p>
|
|
La parte en que ésto se vuelve interesante es que éstos se pueden poner juntos
|
|
para especificar el orden y los cifrados que quiere usar. Para acelerar esto
|
|
también hay pseudónimos (<code>SSLv3, TLSv1, EXP, LOW, MEDIUM,
|
|
HIGH</code>) para ciertos grupos de cifrados. Estas etiquetas se pueden juntar
|
|
con prefijos para formar <em>especificación-de-cifrado</em>. Los prefijos disponibles son:</p>
|
|
|
|
<ul>
|
|
<li>none: añade cifrado a la lista</li>
|
|
<li><code>+</code>: mueve los cifrados coincidentes a la ubicación actual en la
|
|
lista</li>
|
|
<li><code>-</code>: borra los cifrados de la lista (se pueden añadir más
|
|
adelante)</li>
|
|
<li><code>!</code>: mata el cifrado de la lista completamente
|
|
(<strong>no</strong> puede añadirse después)</li>
|
|
</ul>
|
|
|
|
<note>
|
|
<title>Los cifrados <code>aNULL</code>, <code>eNULL</code> y <code>EXP</code>
|
|
siempre están deshabilitados</title>
|
|
<p>Empezando con la versión 2.4.7, null y cifrados de grado export
|
|
están siempre deshabilitados, asi que mod_ssl añade incondicionalmente
|
|
<code>!aNULL:!eNULL:!EXP</code> a cualquier lista de cifrados en la
|
|
inicialización.</p>
|
|
</note>
|
|
|
|
<p>Una forma más sencilla de ver todo esto es usar el comando
|
|
``<code>openssl ciphers -v</code>'' que facilita una buena forma de crear una
|
|
cadena correcta de <em>especificación-de-cifrado</em>. La cadena <em>especificación-de-cifrado</em> depende
|
|
de la versión de librerías OpenSSL utilizadas. Supongamos que es
|
|
``<code>RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5</code>'' que significa
|
|
lo siguiente: Pon <code>RC4-SHA</code> y <code>AES128-SHA</code> al principio.
|
|
Hacemos esto, porque estos cifrados ofrecen un buen compromiso entre velocidad y
|
|
seguridad. Después, incluye los cifrados de seguridad alta y media. Finalmente,
|
|
elimina todos los cifrados que no autentican, p.ej. para SSL los cifrados
|
|
Anónimos Diffie-Hellman, así como todos los cifrados que usan <code>MD5</code>
|
|
como algoritmo de hash porque se ha probado que son insuficientes.</p>
|
|
<example>
|
|
<pre>
|
|
$ openssl ciphers -v 'RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5'
|
|
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
|
|
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
|
|
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
|
|
... ... ... ... ...
|
|
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
|
|
PSK-RC4-SHA SSLv3 Kx=PSK Au=PSK Enc=RC4(128) Mac=SHA1
|
|
KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1
|
|
</pre>
|
|
</example>
|
|
<p>La lista completa de cifrados RSA & DH concretos para SSL se facilita en
|
|
la <a href="#table2">Tabla 2</a>.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW
|
|
</highlight>
|
|
</example>
|
|
<table border="1">
|
|
<columnspec><column width=".3"/><column width=".1"/><column width=".13"/>
|
|
<column width=".1"/><column width=".13"/><column width=".1"/>
|
|
<column width=".13"/></columnspec>
|
|
<tr><th><a name="table2">Cipher-Tag</a></th> <th>Protocol</th> <th>Key Ex.</th> <th>Auth.</th> <th>Enc.</th> <th>MAC</th> <th>Type</th> </tr>
|
|
<tr><td colspan="7"><em>RSA Ciphers:</em></td></tr>
|
|
<tr><td><code>DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>IDEA-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>IDEA(128)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>RC4-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>RC4-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>MD5</td> <td></td> </tr>
|
|
<tr><td><code>DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>EXP-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
|
|
<tr><td><code>EXP-RC2-CBC-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC2(40)</td> <td>MD5</td> <td> export</td> </tr>
|
|
<tr><td><code>EXP-RC4-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC4(40)</td> <td>MD5</td> <td> export</td> </tr>
|
|
<tr><td><code>NULL-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>NULL-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>MD5</td> <td></td> </tr>
|
|
<tr><td colspan="7"><em>Diffie-Hellman Ciphers:</em></td></tr>
|
|
<tr><td><code>ADH-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>RC4(128)</td> <td>MD5</td> <td></td> </tr>
|
|
<tr><td><code>EDH-RSA-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>EDH-DSS-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
|
|
<tr><td><code>EXP-EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
|
|
<tr><td><code>EXP-EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>DSS</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
|
|
<tr><td><code>EXP-ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
|
|
<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>
|
|
</table>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCertificateFile</name>
|
|
<description>Fichero de datos Certificado X.509 codificado en PEM</description>
|
|
<syntax>SSLCertificateFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva apunta a un fichero con datos de certificado en formato PEM. Como
|
|
mínimo, el fichero debe incluir un certificado final (no sólo CA a menos que sea
|
|
autofirmado). La directiva puede usarse multiples veces (haciendo referencia a
|
|
ficheros distintos) para dar soporte a múltiples algoritmos para la
|
|
autenticación de servidor - típicamente RSA, DSA y ECC. El número de algoritmos
|
|
soportados depende de la versión de OpenSSL utilizada por mod_ssl: con la versión
|
|
1.0.0 o posterior,
|
|
<code>openssl list-public-key-algorithms</code> sacará una lista de algoritmos
|
|
soportados, vea también la nota más adelante sobre limitaciones de versiones
|
|
OpenSSL previas a 1.0.2 y la forma de sortearlas.
|
|
</p>
|
|
|
|
<p>
|
|
Los ficheros pueden también incluir certificados de CA intermedias, ordenados
|
|
desde el certificado firmado hasta el certificado raíz. Esto está soportado con
|
|
la versión 2.4.8 y posterior, y deja obsoleta la directiva
|
|
<directive module="mod_ssl">SSLCertificateChainFile</directive>.
|
|
Cuando se trabaja con OpenSSL 1.0.2 o posterior, esto permite que se configuren
|
|
la cadena de CAs intermedias por certificado.
|
|
</p>
|
|
|
|
<p>
|
|
También se pueden añadir parámetros personalizados DH y un nombre de curva EC
|
|
para claves efímeras al final del primer fichero configurado usando
|
|
<directive module="mod_ssl">SSLCertificateFile</directive>.
|
|
Esto está soportado en la versión 2.4.7 y posterior.
|
|
|
|
Tales parámetros pueden ser generados usando los comandos
|
|
<code>openssl dhparam</code> y <code>openssl ecparam</code>. Los parámetros se
|
|
pueden añadir tal cual al final del primer fichero de certificado. sólo se puede
|
|
usar el primer fichero para los parámetros personalizados, puesto que estos
|
|
se aplican independientemente del tipo de algoritmo de autenticación.
|
|
</p>
|
|
|
|
<p>
|
|
Finalmente la clave privada del certificado también se puede añadir al fichero
|
|
de certificado en lugar de usar por separado la directiva
|
|
<directive module="mod_ssl">SSLCertificateKeyFile</directive>. Esta práctica
|
|
está muy desaconsejada. Si se usa, los ficheros de certificado usando tales
|
|
ficheros de claves embebidas deben configurarse después de los certificados que
|
|
usan una clave privada en un fichero aparte. Si la clave privada está encriptada
|
|
, el diálogo de solicitud de contraseña se fuerza en el arranque.
|
|
</p>
|
|
|
|
<note>
|
|
<title>Interoperabilidad de parámetro DH con primos > 1024 bits</title>
|
|
<p>
|
|
Comenzando con la versión 2.4.7, mod_ssl hace uso de parámetros DH
|
|
estandarizados con longitud de primos de 2048, 3072 y 4096 bits y con longitud
|
|
adicional de primos de 6144 y 8192 bits comenzando con la versión 2.4.10
|
|
(from <a href="http://www.ietf.org/rfc/rfc3526.txt">RFC 3526</a>), y los
|
|
envía a clientes basándose en la longitud de la clave RSA/DSA del certificado.
|
|
Con clientes basados en Java en particular (Java 7 o anterior), esto puede
|
|
llevar a fallos de saludo inicial SSL - vea esta
|
|
<a href="../ssl/ssl_faq.html#javadh">respuesta de FAQ </a> para sortear estos
|
|
problemas.
|
|
</p>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Parámetros DH por defecto cuando se usan multiples certificados y
|
|
y versiones de OpenSSL anteriores a 1.0.2</title>
|
|
<p>
|
|
Cuando se usan múltiples certificados para dar soporte a algoritmos de
|
|
autenticación diferentes (como RSA, DSA pero principalmente ECC) y OpenSSL
|
|
anterior a 1.0.2, se recomienda usar o bien parámetros DH personalizados
|
|
(preferiblemente) añadiéndolos al primer fichero de certificado (como se
|
|
describe más arriba), o ordenar las directivas
|
|
<directive>SSLCertificateFile</directive> para que los certificados RSA/DSA
|
|
estén colocadas <strong>después</strong> del ECC.
|
|
</p>
|
|
|
|
<p>
|
|
Esto se debe a una limitación en versiones más antiguas de OpenSSL que no
|
|
permiten que el servidor HTTP Apache determine el certificado seleccionado
|
|
actualmente en el momento del saludo SSL (cuando se deben mandar los parámetros
|
|
DH al cliente) pero en su lugar siempre se provee el último certificado
|
|
configurado. Consecuentemente, el servidor puede seleccionar parámetros DH
|
|
por defecto basado en la longitud de la clave privada incorrecta (las clacves
|
|
ECC son mucho más pequeñas que las RSA/DSA y su longitud no es relevante para
|
|
seleccionar primos DH).
|
|
</p>
|
|
|
|
<p>
|
|
Puesto que los parámetros personalizados DH siempre tienen precedencia sobre
|
|
los de por defecto, este problema se puede evitar creando y configurándolos
|
|
(como se describe arriba), y así usar una longitud adecuada/personalizada.
|
|
</p>
|
|
</note>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCertificateFile "/usr/local/apache2/conf/ssl.crt/server.crt"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCertificateKeyFile</name>
|
|
<description>Fichero de clave privada de Servidor codificada en PEM</description>
|
|
<syntax>SSLCertificateKeyFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva apunta al fichero de clave privada codificado en PEM para el
|
|
servidor. Si la clave privada contenida en el fichero está encriptada, se
|
|
forzará un diálogo de solicitud de contraseña en el arranque.</p>
|
|
|
|
<p>
|
|
La directiva puede usarse múltiples veces (haciendo referencia a ficheros
|
|
distintos) para dar soporte a múltiples algoritmos de autenticación para el
|
|
servidor. Por cada directiva
|
|
<directive module="mod_ssl">SSLCertificateKeyFile</directive>
|
|
directive, debe haber una directiva <directive>SSLCertificateFile</directive>
|
|
relacionada.</p>
|
|
|
|
<p>
|
|
La clave privada se puede combinar con el certificado en el fichero indicado en
|
|
<directive module="mod_ssl">SSLCertificateFile</directive>, pero esta práctica
|
|
es muy desaconsejable. Si se usa, los ficheros de certificado con la clave
|
|
privada dentro deben configurarse después de los certificados que tienen una
|
|
clave privada en otro fichero.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl.key/server.key"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCertificateChainFile</name>
|
|
<description>Fichero de Certificados CA de Servidor codificado en
|
|
PEM</description>
|
|
<syntax>SSLCertificateChainFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<note><title>SSLCertificateChainFile está obsoleto</title>
|
|
<p><code>SSLCertificateChainFile</code> quedó obsoleto con la versión 2.4.8,
|
|
cuando se extendió <directive module="mod_ssl">SSLCertificateFile</directive>
|
|
para cargar también los certificados de CA intermedias del fichero de
|
|
certificados del servidor.</p>
|
|
</note>
|
|
|
|
<p>
|
|
Esta directiva configura el fichero <em>todo-en-uno</em> donde puede ensamblar los
|
|
certificados de Autoridades de Certificación (CA - Certification Authorities)
|
|
que forman la cadena del certificado del servidor. Este comienza con el
|
|
certificado de la CA firmante del certificado del servidor y puede ir hasta el
|
|
certificado de la CA raíz. Tal fichero es simplemente la concatenación de varios
|
|
ficheros de Certificado CA codificado en PEM, generalmente siguiendo la cadena
|
|
de certificación.</p>
|
|
|
|
<p>
|
|
Esto debería usarse alternativamente y/o adicionalmente a
|
|
<directive module="mod_ssl">SSLCACertificatePath</directive> para construir
|
|
explicitamente la cadena de CA del certificado del servidor que se envía al
|
|
navegador además del certificado del servidor. Es especialmente últil
|
|
para evitar conflictos con certificados CA cuando se usa autenticación de
|
|
cliente. Porque aunque colocar los CA de la cadena de certificados del servidor
|
|
en <directive module="mod_ssl">SSLCACertificatePath</directive> tiene el mismo
|
|
efecto para la construcción de la cadena de certificados, tiene un efecto
|
|
adicional en la que los certificados cliente firmados por el mismo certificado CA
|
|
también se aceptan en la autenticación de cliente.</p>
|
|
|
|
<p>
|
|
Pero tenga cuidado: Proveer la cadena de certificados funciona sólo si está
|
|
usando <em>un sólo</em> certificado de servidor basado en RSA <em>o</em> DSA. Si
|
|
está usando un par de certificados juntos RSA+DSA, esto sólo funcionará si
|
|
ambos certificados usan <em>la misma</em> cadena de certificados. Si no los
|
|
navegadores se confundirán en esta situación.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCertificateChainFile "/usr/local/apache2/conf/ssl.crt/ca.crt"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCACertificatePath</name>
|
|
<description>Directorio de certificados CA codificados en PEM para la
|
|
autenticación de Cliente</description>
|
|
<syntax>SSLCACertificatePath <em>ruta-de-directorio</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el directorio donde guarda los certificados de
|
|
Autoridades de Certificación (CAs) de los clientes que accederán a su servidor.
|
|
Esto se usarán para verificar el certificado cliente en la Autenticación de
|
|
Cliente.</p>
|
|
|
|
<p>
|
|
Los ficheros en este directorio tienen que ser codificados en PEM y se acceden a
|
|
través de nombres de ficheros con hash. Así que generalmente no puede poner
|
|
simplemente los ficheros ahí: también tiene que crear enlaces simbólicos con
|
|
nombre <em>valor-hash</em><code>.N</code>. Y siempre debería asegurarse de que
|
|
este directorio contiene los enlaces simbólicos apropiados.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCACertificatePath "/usr/local/apache2/conf/ssl.crt/"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCACertificateFile</name>
|
|
<description>Fichero de Certificados CA concatenados y codificados en PEM para
|
|
la Autenticación de Cliente</description>
|
|
<syntax>SSLCACertificateFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el fichero <em>todo-en-uno</em> donde puede ensamblar
|
|
los Certificados de las Autoridades de Certificación (CA) de los
|
|
<em>clientes</em> que acceden a su servidor. Esto se usan para la Autenticación
|
|
de Cliente. Tal fichero es sencillamente la concatenación, en orden de preferencia,
|
|
de varios ficheros de Certificado codificados en PEM. Esto puede usarse
|
|
alternativamente y/o adicionalmente a
|
|
<directive module="mod_ssl">SSLCACertificatePath</directive>.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCADNRequestFile</name>
|
|
<description>Fichero de certificados CA concatenados codificados en PEM para
|
|
definir nombres de CA aceptables</description>
|
|
<syntax>SSLCADNRequestFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Cuando se solicita un certificado cliente por mod_ssl, una lista de
|
|
<em>nombres de Autoridad Certificadora aceptables</em> se envía al cliente en
|
|
el saludo SSL. Estos nombres de CA se pueden usar por el cliente para
|
|
seleccionar un certificado cliente apropiado entre los que tiene disponibles.</p>
|
|
|
|
<p>Si no están las directivas <directive
|
|
module="mod_ssl">SSLCADNRequestPath</directive> o
|
|
<directive module="mod_ssl">SSLCADNRequestFile</directive>, entonces el
|
|
conjunto de nombres aceptables de CA enviados al cliente es la de los nombres
|
|
de todos los certificados de CA cargados en las directivas
|
|
<directive module="mod_ssl">SSLCACertificateFile</directive> y
|
|
<directive module="mod_ssl">SSLCACertificatePath</directive>; en otras palabras,
|
|
los nombres de las CAs que se usarán actualmente para verificar el certificado
|
|
cliente.</p>
|
|
|
|
<p>En algunas circunstancias, es útil poder enviar un conjunto de nombres de CA
|
|
aceptables diferente de las CAs usadas para verificar el certificado cliente -
|
|
por ejemplo, si los certificados cliente están firmados CAs intermedias. En tales
|
|
casos, <directive module="mod_ssl">SSLCADNRequestPath</directive> y/o
|
|
<directive module="mod_ssl">SSLCADNRequestFile</directive> se pueden usar; los
|
|
nombres de CA aceptables se toman del conjunto completo de certificados en el
|
|
directorio y/o fichero especificados por este par de directivas.</p>
|
|
|
|
<p><directive module="mod_ssl">SSLCADNRequestFile</directive> debe especificar
|
|
un fichero <em>todo-en-uno</em> que contenga una concatenación de certificados
|
|
CA codificados en PEM.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCADNRequestFile "/usr/local/apache2/conf/ca-names.crt"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCADNRequestPath</name>
|
|
<description>Directorio de Certificados CA codificados en PEM para definir
|
|
nombres de CA aceptables</description>
|
|
<syntax>SSLCADNRequestPath <em>ruta-al-directorio</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
|
|
<p>Esta directiva opcional puede usarse para especificar un conjunto de
|
|
<em>nombres de CA aceptables</em> que serán enviados al cliente cuando se
|
|
solicita un certificado cliente. Vea la directiva
|
|
<directive module="mod_ssl">SSLCADNRequestFile</directive> para más
|
|
detalles.</p>
|
|
|
|
<p>Los ficheros en este directorio tienen que estar codificados en PEM y se
|
|
accede a ellos con nombres de ficheros con hash. Así que generalmente no puede
|
|
poner sin más los ficheros de Certificado ahí: también tiene que crear enlaces
|
|
simbólicos llamados <em>valor-de-hash</em><code>.N</code>. Y siempre debería
|
|
estar seguro de que este directorio contiene los enlaces simbólicos
|
|
apropiados.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCADNRequestPath "/usr/local/apache2/conf/ca-names.crt/"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCARevocationPath</name>
|
|
<description>Directorio de CRLs de CA codificados en PEM para la Autenticación
|
|
de Cliente</description>
|
|
<syntax>SSLCARevocationPath <em>ruta-al-directorio</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el directorio donde usted alojará las Listas de
|
|
Revocación de Certificados (CRL) de las Autoridades de Certificación (CAs) para
|
|
los clientes que conectan al servidor. Estas se usan para revocar el
|
|
certificado cliente en la Autenticación de Cliente.</p>
|
|
|
|
<p>
|
|
Los ficheros en este directorio tienen que ser codificados en PEM y se accede a
|
|
ellos con nombres de ficheros con hash. Así que generalmente no sólo tiene que
|
|
poner los ficheros CRL ahí. Adicionalmente tiene que crear enlaces simbólicos
|
|
llamados <em>valor-de-hash</em><code>.rN</code>. Y debería asegurarse siempre
|
|
que este directorio contiene los enlaces simbólicos apropiados.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCARevocationPath "/usr/local/apache2/conf/ssl.crl/"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCARevocationFile</name>
|
|
<description>Fichero de CRL's de CA concatenados y codificados en PEM para la
|
|
Autenticación de ClienteFile of concatenated PEM-encoded CA CRLs for
|
|
</description>
|
|
<syntax>SSLCARevocationFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el fichero <em>todo-en-uno</em> donde puede ensamblar
|
|
las Listas de Revocación de Certificados (CRL) de las Autoridades de
|
|
Certificación (CA) para los <em>clientes</em> que conectan a su servidor. Estos
|
|
se usan para la Autenticación de Cliente. Tal fichero es simplemente la
|
|
concatenación de varios ficheros CRL codificados en PEM, en orden de
|
|
preferencia. Esto se puede usar alternativamente a/o adicionalmente a
|
|
<directive module="mod_ssl">SSLCARevocationPath</directive>.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCARevocationFile "/usr/local/apache2/conf/ssl.crl/ca-bundle-client.crl"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCARevocationCheck</name>
|
|
<description>Activar comprobación de revocación basada en CRL</description>
|
|
<syntax>SSLCARevocationCheck chain|leaf|none <em>modificador</em>es</syntax>
|
|
<default>SSLCARevocationCheck none</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility><em>Modificador</em>es Opcionales disponibles en httpd 2.4.21 o
|
|
posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>
|
|
Activa la comprobación de la lista de revocación de certificados (CRL). Al menos
|
|
<directive module="mod_ssl">SSLCARevocationFile</directive>
|
|
o <directive module="mod_ssl">SSLCARevocationPath</directive> deben estar
|
|
configuradas. Cuando se configuran a <code>chain</code> (configuración
|
|
recomendada), las comprobaciones de CRL se aplican a todos los certificados
|
|
en la cadena, mientras que si se configura a <code>leaf</code> limita las
|
|
comprobaciones al certificado firmado final.
|
|
</p>
|
|
|
|
<p>Los <em>modificador</em>es disponibles son:</p>
|
|
<ul>
|
|
<li><code>no_crl_for_cert_ok</code>
|
|
<p>
|
|
Previamente a la versión 2.3.15, la comprobación de CRL en mod_ssl también
|
|
tenía éxito cuando no se encontraban CRL/s para los certificados comprobados
|
|
en ninguna de las ubicaciones configuradas con
|
|
<directive module="mod_ssl">SSLCARevocationFile</directive>
|
|
o <directive module="mod_ssl">SSLCARevocationPath</directive>.
|
|
</p>
|
|
|
|
<p>
|
|
Con la introducción de <directive>SSLCARevocationFile</directive>,
|
|
el comportamiento ha cambiado: por defecto con <code>chain</code> o
|
|
<code>leaf</code>, los CRLs <strong>deben</strong> estar presentes
|
|
para que la validación tenga éxito, si no fallará con un error
|
|
<code>"unable to get certificate CRL"</code>.
|
|
</p>
|
|
|
|
<p>
|
|
El <em>modificador</em> <code>no_crl_for_cert_ok</code> permite
|
|
restaurar el comportamiento anterior..
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLCARevocationCheck chain
|
|
</highlight>
|
|
</example>
|
|
<example><title>Compatibilidad con versiones 2.2</title>
|
|
<highlight language="config">
|
|
SSLCARevocationCheck chain no_crl_for_cert_ok
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLVerifyClient</name>
|
|
<description>Tipo de verificación de Certificado Cliente</description>
|
|
<syntax>SSLVerifyClient <em>nivel</em></syntax>
|
|
<default>SSLVerifyClient none</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context>
|
|
<context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el nivel de verificación de Certificado para la
|
|
Autenticación de Cliente. Tenga en cuenta que esta directiva se puede usar tanto
|
|
en contexto servidor como en contexto directorio. En contexto de servidor se
|
|
aplica al proceso de autenticación de cliente usado en el saludo estándar de SSL
|
|
cuando se establece una conexión. En el contexto directorio fuerza una
|
|
renegociación SSL con el nivel de verificación reconfigurado después de que se
|
|
lee la petiicón HTTP pero antes de que se responda la respuesta HTTP.</p>
|
|
|
|
<p>
|
|
Los siguientes niveles están disponibles para <em>nivel</em>:</p>
|
|
<ul>
|
|
<li><strong>none</strong>:
|
|
no se requiere Certificado cliente ninguno</li>
|
|
<li><strong>optional</strong>:
|
|
el cliente <em>puede</em> presentar un Certificado válido</li>
|
|
<li><strong>require</strong>:
|
|
el cliente <em>tiene que</em> presentar un Certificado válido</li>
|
|
<li><strong>optional_no_ca</strong>:
|
|
el cliente puede presentar un Certificado válido<br />
|
|
pero no tiene por qué ser verificable (satisfactoriamente). No se puede
|
|
depender de esta opción para la autenticación de cliente. </li>
|
|
</ul>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLVerifyClient require
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLVerifyDepth</name>
|
|
<description>Profundidad máxima de Certificados CA en la verificación de
|
|
Certificado Cliente</description>
|
|
<syntax>SSLVerifyDepth <em>number</em></syntax>
|
|
<default>SSLVerifyDepth 1</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context>
|
|
<context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura hasta qué nivel debe mod_ssl verificar antes de decidir
|
|
cuando los clientes no tienen un certificado válido. Tenga en cuenta que esta
|
|
directiva puede usarse tanto en contexto servidor como en contexto directorio.
|
|
En contexto servidor se aplica al proceso de autenticación de cliente en el
|
|
salido SSL estándar cuando se establece una conexión. En el contexto directorio
|
|
fuerza una renegociación SSL con la profundidad de verficiación de cliente
|
|
reconfigurada después de que se lea la petición HTTP pero antes de que sé haya
|
|
enviado la respuesta HTTP.</p>
|
|
<p>
|
|
La profundidad es en realidad el número máximo de certificados CA intermedios,
|
|
p. ej. el número de certificados CA máximo permitido a seguir en la verificación
|
|
del certificado cliente. Una profundidad de 0 significa que sólo se
|
|
aceptan los certificados cliente autofirmados, la profundidad por defecto de 1
|
|
significa que el cliente puede ser autofirmado o tiene que estar firmado por una
|
|
CA que es directamente conocida por el servidor (p. ej. los certificados CA
|
|
están bajo
|
|
<directive module="mod_ssl">SSLCACertificatePath</directive>), etc.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLVerifyDepth 10
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLSRPVerifierFile</name>
|
|
<description>Ruta hacia el fichero verificador SRP</description>
|
|
<syntax>SSLSRPVerifierFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.4 y posterior si se usa OpenSSL 1.0.1 o
|
|
posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva activa TLS-SRP y configura la ruta al fichero verificador
|
|
OpenSSL SRP (Secure Remote Password) que contiene nombres de usuario,
|
|
verificadores, salts y parámetros de grupo TLS-SRP.</p>
|
|
<example><title>Ejemplo</title>
|
|
SSLSRPVerifierFile "/ruta/al/fichero.srpv"
|
|
</example>
|
|
|
|
<p>
|
|
El fichero verificador puede generarse con la utilidad de línea de comandos
|
|
<code>openssl</code>:</p>
|
|
|
|
<example><title>Creando el fichero verificador SRP</title>
|
|
openssl srp -srpvfile passwd.srpv -userinfo "some info" -add username
|
|
</example>
|
|
|
|
<p> El valor dado con el parámetro opcional <code>-userinfo</code> está
|
|
disponible en la variable de entorno de petición
|
|
<code>SSL_SRP_USERINFO</code>.</p>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLSRPUnknownUserSeed</name>
|
|
<description>Semilla de usuario desconocido SRP</description>
|
|
<syntax>SSLSRPUnknownUserSeed <em>cadenadecaracteres-secreta</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.4 y posterior si se usa OpenSSL 1.0.1 o
|
|
posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura la semilla usada para aparentar parámetros de usuario
|
|
SRP para usuarios desconocidos, para evitar dar a conocer si el usuario
|
|
facilitado existe, se especifica una cadena de caracteres secreta. Si no se usa
|
|
esta directiva, entonces Apache deolverá la alerta UNKNOWN_PSK_IDENTITY a
|
|
clientes que espcifican un nombre de usuario desconocido.
|
|
</p>
|
|
<example><title>Ejemplo</title>
|
|
SSLSRPUnknownUserSeed "secret"
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOptions</name>
|
|
<description>Configurar varias opciones del motor SSL en tiempo
|
|
real</description>
|
|
<syntax>SSLOptions [+|-]<em>opción</em> ...</syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context>
|
|
<context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>Options</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva puede usarse para controlar varias opciones en tiempo real en
|
|
contexto directorio. Normalmente, si múltiples <code>SSLOptions</code>
|
|
pueden aplicar a un directorio, entonces se usará la más
|
|
específica; las opciones no se fusionan. Sin embargo, si <em>todas</em> las
|
|
opciones en la directiva <code>SSLOptions</code> están precedidas de un signo
|
|
más (<code>+</code>) o menos (<code>-</code>), las opciones se fusionan.
|
|
Cualquier opción precedida de un <code>+</code> es añadida a las opciones que
|
|
se están aplicando en ese momento, y cualquier opción precedida de un
|
|
<code>-</code> se elimina de las opciones aplicadas en ese momento.</p>
|
|
<p>
|
|
Las <em>opciones</em> disponibles son:</p>
|
|
<ul>
|
|
<li><code>StdEnvVars</code>
|
|
<p>
|
|
Cuando esta opción está habilitada, se generan las variables de entorno
|
|
estándar de SSL relacionadas con CGI/SSI. Esto está desactivado por defecto
|
|
por razones de rendimiento, porque el paso de extracción de la información
|
|
es una operación bastante costosa. Así que uno sólo activaría esta opción
|
|
para peticiones CGI o SSI.</p>
|
|
</li>
|
|
<li><code>ExportCertData</code>
|
|
<p>
|
|
Cuando se activa esta opción, se generan variables de entorno CGI/SSI
|
|
adicionales: <code>SSL_SERVER_CERT</code>, <code>SSL_CLIENT_CERT</code> y
|
|
<code>SSL_CLIENT_CERT_CHAIN_</code><em>n</em> (con <em>n</em> = 0,1,2,..).
|
|
Estas contienen los certificados X.509 codificados en PEM del servidor
|
|
y el cliente para la conexión actual HTTPs y pueden usarse por scripts CGI
|
|
para una comprobación más detallada de los Certificados. Adicionalmente
|
|
también se facilitan todos los demás certificados de la cadena del
|
|
certificado cliente. Esto carga el entorno de variables un poco, así
|
|
que por esto deberá usar esta opción para activarla sólo cuando sea
|
|
necesario.</p>
|
|
</li>
|
|
<li><code>FakeBasicAuth</code>
|
|
<p>
|
|
Cuando se activa esta opción, el Nombre Distinguido de Sujeto (DN) del
|
|
Certificado Cliente X509 se traduce a un nombre de Autenticación HTTP Básica.
|
|
Esto significa que se pueden usar los métodos estándar de autenticación para
|
|
control de acceso. El nombre de usuario es tan sólo el Sujeto del
|
|
Certificado Cliente X509 (se puede determinar ejecutando el comando
|
|
de OpenSSL <code>openssl x509</code>: <code>openssl x509 -noout -subject -in
|
|
</code><em>certificado</em><code>.crt</code>). La directiva
|
|
<directive module="mod_ssl">SSLUserName</directive> puede usarse para
|
|
especificar qué
|
|
parte del Sujeto del Certificado está embebida en el nombre de usuario.
|
|
Tenga en cuenta que no se obtiene ninguna contraseña del usuario. Cada
|
|
entrada en el fichero de usuario necesita esta contraseña:
|
|
``<code>xxj31ZMTZzkVA</code>'', que es la versión encriptada en DES de la
|
|
palabra `<code>password</code>''. Aquellos que viven bajo la encriptación
|
|
basada en MD5 (por ejemplo bajo FreeBSD or BSD/OS, etc.) debería usar
|
|
el siguiente hash MD5 de la misma palabra:
|
|
``<code>$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/</code>''.</p>
|
|
|
|
<p>Tenga en cuenta que
|
|
la directiva <directive module="mod_auth_basic">AuthBasicFake</directive>
|
|
dentro de <module>mod_auth_basic</module> puede usarse como un mecanismo
|
|
general para fingir la autenticación básica, dando control sobre la
|
|
estructura tanto del nombre como de la contraseña.</p>
|
|
|
|
<note type="warning">
|
|
<p>Los nombres de usuarios utilizados para <code>FakeBasicAuth</code> no
|
|
deben incluir caracteres no-ASCII, caracteres de escape ASCII (tales como
|
|
el de nueva línea), o una coma. Si se encuentra una coma, se generará
|
|
un error 403 Forbidden con httpd 2.5.1 y posterior.</p>
|
|
</note>
|
|
</li>
|
|
<li><code>StrictRequire</code>
|
|
<p>
|
|
Esto <em>fuerza</em> acceso prohibido cuando <code>SSLRequireSSL</code> o
|
|
<code>SSLRequire</code> deciden satisfactoriamente que el acceso debería
|
|
denegarse. Generalmente por defecto en el caso donde se usa una
|
|
directiva ``<code>Satisfy any</code>'', y se pasan otras restricciones de
|
|
acceso, se sobreescribe la denegación del acceso debido a
|
|
<code>SSLRequireSSL</code> o <code>SSLRequire</code> (porque así es como
|
|
debería funcionar el mecanismo <code>Satisfy</code> de Apache .) Pero para
|
|
la restricción estricta de acceso puede usar <code>SSLRequireSSL</code> y/o
|
|
<code>SSLRequire</code> en combinación con un
|
|
``<code>SSLOptions +StrictRequire</code>''. Entonces un
|
|
``<code>Satisfy Any</code>'' adicional no tiene oportunidad una vez que
|
|
mod_ssl ha decidido denegar el acceso.</p>
|
|
</li>
|
|
<li><code>OptRenegotiate</code>
|
|
<p>
|
|
Esto activa la gestión optimizada de renegociación de conexión SSL cuando
|
|
se usan directivas SSL en contexto de directorio. Por defecto un esquema
|
|
estricto está habilitado donde <em>cada</em> reconfiguración de directorio de
|
|
parámetros SSL provoca una renegociación <em>total</em> del saludo SSL.
|
|
Cuando se usa esta opción mod_ssl intenta evitar saludos SSL innecesarios
|
|
haciendo comprobaciones más específicas (pero todavía seguras) de parámetros.
|
|
Sin embargo estas comprobaciones más específicas pueden no ser lo que espera
|
|
el usuario, así que, lo recomendable es que active ésto sólo en contexto
|
|
directorio.</p>
|
|
</li>
|
|
<li><code>LegacyDNStringFormat</code>
|
|
<p>
|
|
Esta opción influencia cómo se formatean los valores de las variables
|
|
<code>SSL_{CLIENT,SERVER}_{I,S}_DN</code>. Desde la versión 2.3.11, Apache
|
|
HTTPD usa un formato compatible RFC 2253 por defecto. Esto usa comas como
|
|
delimitadores entre atributos, permite el uso de caracteres no-ASCII (que
|
|
son convertidos a UTF-8), escapa varios caracteres especiales con barra
|
|
invertida "\", y ordena los atributos con el atributo "C" al final.</p>
|
|
|
|
<p>Si se activa <code>LegacyDNStringFormat</code>, el formato antiguo
|
|
que ordena el atributo "C" el primero será utilizado, usa barras como
|
|
separadores y no manipula caracteres no-ASCII y especiales de ninguna forma
|
|
consistente.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLOptions +FakeBasicAuth -StrictRequire
|
|
<Files ~ "\.(cgi|shtml)$">
|
|
SSLOptions +StdEnvVars -ExportCertData
|
|
</Files>
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLRequireSSL</name>
|
|
<description>Denegar el acceso cuando no se usa SSL para la petición
|
|
HTTP</description>
|
|
<syntax>SSLRequireSSL</syntax>
|
|
<contextlist><context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p><!-- XXX: I think the syntax is wrong -->
|
|
Esta directiva prohibe el acceso a menos que esté habilitado HTTP sobre SSL
|
|
(p. ej. HTTPS) para la conexión en cuestión. Esto es muy útil dentro de
|
|
hosts virtuales con SSL activado o directorios, para defenderse de errores
|
|
de configuración que exponen cosas que deberían estar protegidas. Cuando esta
|
|
directiva está presente todas las peticiones que no usen SSL son denegadas.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLRequireSSL
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLRequire</name>
|
|
<description>Permite acceso sólo cuando una compleja expresión booleana
|
|
arbitraría es cierta</description>
|
|
<syntax>SSLRequire <em>expresión</em></syntax>
|
|
<contextlist><context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
|
|
<note><title>SSLRequire está obsoleta</title>
|
|
<p><code>SSLRequire</code> está obsoleta y debería en general ser sustituida por
|
|
<a href="mod_authz_core.html#reqexpr">Require expr</a>. La tal llamada
|
|
sintaxis de <a href="../expr.html">ap_expr</a> en <code>Require expr</code> es
|
|
la sustitución de la sintaxis de <code>SSLRequire</code>, con la siguiente
|
|
excepción:</p>
|
|
|
|
<p>En <code>SSLRequire</code>, los operadores de comparación <code><</code>,
|
|
<code><=</code>, ... son equivalentes completamente a los operadores
|
|
<code>lt</code>, <code>le</code>, ... y funionan de una manera un tanto peculiar
|
|
que primero compara la longitud de dos cadenas de caracteres y después el orden
|
|
léxico. Por otro lado, <a href="../expr.html">ap_expr</a> tiene dos conjuntos
|
|
de operadores de comparación: Los operadores <code><</code>,
|
|
<code><=</code>, ... hacen compraciones léxicas de cadenas de caracteres,
|
|
mientras que los operadores <code>-lt</code>, <code>-le</code>, ... hacen
|
|
comparación de números integrales.
|
|
Para los últimos, también hay aliases sin el guión inicial:
|
|
<code>lt</code>, <code>le</code>, ...
|
|
</p>
|
|
</note>
|
|
|
|
<p>
|
|
Esta directiva especifica un requerimiento de acceso general que tiene
|
|
que pasarse para que se permita el acceso. Es una directiva muy versátil porque
|
|
la especificación del requerimiento es una compleja expresión booleana arbitraria
|
|
que contiene cualquier número de comprobaciones.</p>
|
|
<p>
|
|
|
|
La <em>expresión</em> debe coincidir en la siguiente sintaxis (dada una notación
|
|
gramatical BNF):</p>
|
|
<blockquote>
|
|
<pre>
|
|
expr ::= "<strong>true</strong>" | "<strong>false</strong>"
|
|
| "<strong>!</strong>" expr
|
|
| expr "<strong>&&</strong>" expr
|
|
| expr "<strong>||</strong>" expr
|
|
| "<strong>(</strong>" expr "<strong>)</strong>"
|
|
| comp
|
|
|
|
comp ::= word "<strong>==</strong>" word | word "<strong>eq</strong>" word
|
|
| word "<strong>!=</strong>" word | word "<strong>ne</strong>" word
|
|
| word "<strong><</strong>" word | word "<strong>lt</strong>" word
|
|
| word "<strong><=</strong>" word | word "<strong>le</strong>" word
|
|
| word "<strong>></strong>" word | word "<strong>gt</strong>" word
|
|
| word "<strong>>=</strong>" word | word "<strong>ge</strong>" word
|
|
| word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
|
|
| word "<strong>in</strong>" "<strong>PeerExtList(</strong>" word "<strong>)</strong>"
|
|
| word "<strong>=~</strong>" regex
|
|
| word "<strong>!~</strong>" regex
|
|
|
|
wordlist ::= word
|
|
| wordlist "<strong>,</strong>" word
|
|
|
|
word ::= digit
|
|
| cstring
|
|
| variable
|
|
| function
|
|
|
|
digit ::= [0-9]+
|
|
cstring ::= "..."
|
|
variable ::= "<strong>%{</strong>" varname "<strong>}</strong>"
|
|
function ::= funcname "<strong>(</strong>" funcargs "<strong>)</strong>"
|
|
</pre>
|
|
</blockquote>
|
|
|
|
<p>Para <code>varname</code> se puede usar cualquiera de las variables descritas
|
|
en <a href="#envvars">Variables de Entorno</a>. Para
|
|
<code>funcname</code> las funciones disponibles están listadas en la
|
|
<a href="../expr.html#functions">documentación de ap_expr</a>.</p>
|
|
|
|
<p>La <em>expresión</em> es interpretada dentro de una representación interna
|
|
de máquina cuando se carga la configuración, y es después evaluada durante
|
|
el procesamiento de la petición. En contexto .htaccess, la <em>expresión</em> es
|
|
en ambos casos interpretada y ejecutada cada vez que se encuentra un fichero
|
|
.htaccess durante el procesamiento de la petición.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
|
|
and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
|
|
and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
|
|
and %{TIME_WDAY} -ge 1 and %{TIME_WDAY} -le 5 \
|
|
and %{TIME_HOUR} -ge 8 and %{TIME_HOUR} -le 20 ) \
|
|
or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>La función <code>PeerExtList(<em>object-ID</em>)</code> espera encontrar
|
|
cero o más instancias de la extensión de certificado X.509 identificadas por
|
|
un <em>ID de objecto</em> (OID) dado en el certificado cliente. La expresión
|
|
se evalúa a cierta si la cadena de caracteres de la izquierda coincide
|
|
exactamente contra el valor de la extensión identificada por este OID. (Si están
|
|
presentes múltiples extensiones con el mismo OID, al menos uno debe
|
|
coincidir).</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLRequire "foobar" in PeerExtList("1.2.3.4.5.6")
|
|
</highlight>
|
|
</example>
|
|
|
|
<note><title>Notas sobre la función PeerExtList</title>
|
|
|
|
<ul>
|
|
|
|
<li><p>El ID de objeto puede ser especificado o bien como un
|
|
nombre descriptivo reconocido por la librería SSL, tal como
|
|
<code>"nsComment"</code>, o como un OID numérico, tal como
|
|
<code>"1.2.3.4.5.6"</code>.</p></li>
|
|
|
|
<li><p>Expresiones con tipos conocidos para la librería SSL se expresan como una
|
|
cadena de caracteres antes de su comparación. Para una extensión con un tipo no
|
|
reconocido por la librería SSL, mod_ssl interpretará el valor si es uno de los
|
|
tipos primitivos ASN.1 types UTF8String, IA5String, VisibleString,
|
|
o BMPString. Para una extensión de uno de estos tipos, el valor de la cadena
|
|
de caracteres se convertirá en UTF-8 si es necesario, y entonces comparada
|
|
contra la expresión de la izquierda.</p></li>
|
|
|
|
</ul>
|
|
</note>
|
|
|
|
</usage>
|
|
<seealso><a href="../env.html">Variables de entorno en el Servidor HTTP
|
|
Apache</a>, para más ejemplos.
|
|
</seealso>
|
|
<seealso><a href="mod_authz_core.html#reqexpr">Require expr</a></seealso>
|
|
<seealso><a href="../expr.html">Sintaxis general de expresión en el Servidor
|
|
HTTP Apache</a>
|
|
</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLRenegBufferSize</name>
|
|
<description>Configure el tamaño para el búfer de renegociación
|
|
SSL</description>
|
|
<syntax>SSLRenegBufferSize <var>bytes</var></syntax>
|
|
<default>SSLRenegBufferSize 131072</default>
|
|
<contextlist><context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
|
|
<p>Si se requiere una renegociación SSL por el contexto location, por ejemplo,
|
|
cualquier uso de <directive module="mod_ssl">SSLVerifyClient</directive> en un
|
|
bloque Directory o Location, entonces <module>mod_ssl</module> debe hacer búfer
|
|
del cuerpo de la petición HTTP en memoria hasta que el nuevo saludo SSL
|
|
puede realizarse. Esta directiva se puede usar para especificar la cantidad
|
|
de memoria que se usará para este búfer.</p>
|
|
|
|
<note type="warning"><p>
|
|
Tenga en cuenta que en muchas configuraciones, el cliente enviando el cuerpo de
|
|
la petición no es confiable así que se debe considerar un ataque de denegación
|
|
de servicio por consumo de memoria cuando se cambie este valor de
|
|
configuración.
|
|
</p></note>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLRenegBufferSize 262144
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStrictSNIVHostCheck</name>
|
|
<description>Permitir o no a clientes no-SNI acceder a host virtuales basados
|
|
en nombre.
|
|
</description>
|
|
<syntax>SSLStrictSNIVHostCheck on|off</syntax>
|
|
<default>SSLStrictSNIVHostCheck off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura si un cliente no-SNI tiene permiso para acceder a un
|
|
host virtual basado en nombre. Si se configura a <code>on</code> en el host
|
|
virtual por defecto basado en nombre, los clientes que no son compatibles con
|
|
SNI no se les permitirá el acceso a <em>ningún</em> host virtual que pertenezca
|
|
a esta combinación de ip/puerto. Si se configura a <code>on</code> en cualquier
|
|
otro host virtual, los clientes no compatibles con SNI no tendrán acceso a ese
|
|
host virtual en particular.
|
|
</p>
|
|
|
|
<note type="warning"><p>
|
|
Esta opción sólo está disponible si httpd fue compilado contra una versión
|
|
compatible con SNI de OpenSSL.
|
|
</p></note>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLStrictSNIVHostCheck on
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyMachineCertificatePath</name>
|
|
<description>Directorio de certificados cliente codificados en PEM y claves
|
|
para ser usadas por el proxy</description>
|
|
<syntax>SSLProxyMachineCertificatePath <em>directorio</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el directorio donde se guardan los certificados y claves
|
|
usadas para la autenticación del servidor proxy en servidores remotos.
|
|
</p>
|
|
|
|
<p>Los ficheros en este directorio deben ser codificados en PEM y accesibles
|
|
con nombres de ficheros con hash. Además, debe crear enlaces simbólicos
|
|
llamados <code><em>valor-del-hash</em>.N</code>. Y siempre debería asegurarse
|
|
de que este directorio contiene los enlaces simbólicos apropiados.</p>
|
|
<note type="warning">
|
|
<p>Actualmente no hay soporte para claves privadas encriptadas</p>
|
|
</note>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyMachineCertificatePath "/usr/local/apache2/conf/proxy.crt/"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyMachineCertificateFile</name>
|
|
<description>Fichero de certificados cliente codificados en PEM y claves para
|
|
ser usadas por el proxy</description>
|
|
<syntax>SSLProxyMachineCertificateFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el fichero todo-en-uno donde guarda los certificados y
|
|
claves usadas para la autenticación del servidor proxy en servidores remotos.
|
|
</p>
|
|
<p>
|
|
Este fichero es simplemente la concatenación de varios ficheros de certificado
|
|
codificados en PEM, en orden de preferencia. Use esta directiva alternativamente
|
|
o adicionalmente a <code>SSLProxyMachineCertificatePath</code>.
|
|
</p>
|
|
<note type="warning">
|
|
<p>Actualmente no hay soporte para claves privadas encriptadas</p>
|
|
</note>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyMachineCertificateFile "/usr/local/apache2/conf/ssl.crt/proxy.pem"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyMachineCertificateChainFile</name>
|
|
<description>Fichero de certificados CA concatenados y codificados en PEM para
|
|
ser usados por el proxy para elegir un certificado</description>
|
|
<syntax>SSLProxyMachineCertificateChainFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el fichero todo-en-uno donde guarda la cadena de
|
|
certificados para todos los certificados cliente en uso. Esta directiva se
|
|
necesitará si los servidores remotos presentan una lista de certificados CA
|
|
que no son firmantes directos de uno de los certificados cliente configurados.
|
|
</p>
|
|
<p>
|
|
Este fichero es simplemente la concatenciación de varios ficheros de certificado
|
|
codificado en PEM. En el arranque, cada certificado cliente configurado será
|
|
examinado y se construirá una cadena de confianza.
|
|
</p>
|
|
<note type="warning"><title>Aviso de Seguridad</title>
|
|
<p>Si se activa esta directiva, se confiará en todos los certificados en el
|
|
fichero como si también estuvieran en
|
|
<directive module="mod_ssl">SSLProxyCACertificateFile</directive>.</p>
|
|
</note>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyMachineCertificateChainFile "/usr/local/apache2/conf/ssl.crt/proxyCA.pem"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyVerify</name>
|
|
<description>Tipo de verficación de certificado del servidor remoto</description>
|
|
<syntax>SSLProxyVerify <em>level</em></syntax>
|
|
<default>SSLProxyVerify none</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
|
|
<p>Cuando se configura un proxy para enviar peticiones a un servidor remoto SSL,
|
|
esta directiva se puede usar para configurar verificación de certificado del
|
|
servidor remoto.</p>
|
|
|
|
<p>
|
|
Los siguientes niveles están disponibles para <em>nivel</em>:</p>
|
|
<ul>
|
|
<li><strong>none</strong>:
|
|
No se requiere Certificado del servidor remoto para nada</li>
|
|
<li><strong>optional</strong>:
|
|
el servidor remoto <em>puede</em> presentar un Certificado válido</li>
|
|
<li><strong>require</strong>:
|
|
el servidor remoto <em>tiene que</em> presenta un Certificado válido</li>
|
|
<li><strong>optional_no_ca</strong>:
|
|
el servidor remoto puede presentar un Certificado válido<br />
|
|
pero no tiene por qué ser verificable (con éxito).</li>
|
|
</ul>
|
|
<p>En la práctica sólo los niveles <strong>none</strong> y
|
|
<strong>require</strong> son realmente interesantes, porque el nivel
|
|
<strong>optional</strong> no funciona en todos los servidores y el nivel
|
|
<strong>optional_no_ca</strong> va actualmente contra la idea de autenticación
|
|
(pero se puede usar para establecer páginas de test SSL, etc.)</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyVerify require
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyVerifyDepth</name>
|
|
<description>Máxima profundidad de los Certificados CA en la verificación del
|
|
Certificado en el Servidor Remoto</description>
|
|
<syntax>SSLProxyVerifyDepth <em>number</em></syntax>
|
|
<default>SSLProxyVerifyDepth 1</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura hasta dónde mod_ssl debería verificar antes de decidir
|
|
que el servidor remoto not tiene un certificado válido.</p>
|
|
|
|
<p>
|
|
La profundidad actualmente es el número máximo de expedidores intermedios de
|
|
certificados, p. ej. el número de certificados CA que se permiten seguir como
|
|
máximo para verificar el certificado del servidor remoto. Una profundidad de 0
|
|
sigifnica que sólo se permiten certificados auto-firmados, la profundidad por
|
|
defecto de 1 significa que el servidor remoto puede ser autofirmado o fimado por
|
|
una CA que es directamente conocida por el servidor (p. ej. el certificado CA
|
|
bajo <directive module="mod_ssl">SSLProxyCACertificatePath</directive>),
|
|
etc.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyVerifyDepth 10
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCheckPeerExpire</name>
|
|
<description>Comprobar si el certificado del servidor remoto está expirado
|
|
</description>
|
|
<syntax>SSLProxyCheckPeerExpire on|off</syntax>
|
|
<default>SSLProxyCheckPeerExpire on</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura si se debe comprobar si el certificado del servidor
|
|
remoto está expirado o no. Si la comprobación falla se devuelve un error 502
|
|
(Bad Gateway).
|
|
</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCheckPeerExpire on
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCheckPeerCN</name>
|
|
<description>Comprobar el campo CN del certificado del servidor remoto
|
|
</description>
|
|
<syntax>SSLProxyCheckPeerCN on|off</syntax>
|
|
<default>SSLProxyCheckPeerCN on</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura si se debe comparar el campo CN del certificado del
|
|
servidor remoto contra el nombre de host de la URL solicitada. Si ambos no son
|
|
iguales se envía un código de estado 502 (Bad Gateway).
|
|
<code>SSLProxyCheckPeerCN</code> ha sido sustituido por
|
|
<directive module="mod_ssl">SSLProxyCheckPeerName</directive> en la versión
|
|
2.4.5 y posterior.
|
|
</p>
|
|
|
|
<p>
|
|
En todas las versiones desde 2.4.5 hasta 2.4.20, configurar
|
|
<code>SSLProxyCheckPeerName off</code> era suficiente para activar este
|
|
comportamiento (puesto que el valor por defecto de
|
|
<code>SSLProxyCheckPeerCN</code> era <code>on</code>.) En estas versiones, ambas
|
|
directivas deben configurarse a <code>off</code> para evitar completamente que
|
|
se valide el nombre del certificado del servidor remoto. Muchos usuarios
|
|
reportaron que esto es bastante confuso.
|
|
</p>
|
|
|
|
<p>
|
|
Desde la versión 2.4.21, todas las configuraciones que permiten una de las
|
|
opciones <code>SSLProxyCheckPeerName</code> o <code>SSLProxyCheckPeerCN</code>
|
|
usarán el nuevo comportamiento de
|
|
<directive module="mod_ssl">SSLProxyCheckPeerName</directive>, y todas las
|
|
configuraciones que deshabilitan una de las opciones de
|
|
<code>SSLProxyCheckPeerName</code> o <code>SSLProxyCheckPeerCN</code>
|
|
suprimirán la validación del nombre del certificado del servidor remoto. sólo
|
|
la siguiente configuración habilitará la comparación antigua del CN en 2.4.21 y
|
|
versiones posteriores;
|
|
</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCheckPeerCN on
|
|
SSLProxyCheckPeerName off
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCheckPeerName</name>
|
|
<description>Configure comprobación de nombre de host para certificados de
|
|
servidor remoto
|
|
</description>
|
|
<syntax>SSLProxyCheckPeerName on|off</syntax>
|
|
<default>SSLProxyCheckPeerName on</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
<compatibility>Apache HTTP Server 2.4.5 and later</compatibility>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura la comprobación del nombre de host de certificados de
|
|
servidor cuando mod_ssl está actuando como un cliente SSL. La comprobación
|
|
tendrá éxito si el nombre de host de la petición coincide con uno de los
|
|
CN del sujeto del certificado, o coincide con la extensión subjectAltName. Si la
|
|
comprobación falla, la petición SSL se aborta y se devuelve un código de
|
|
estado 502.
|
|
</p>
|
|
|
|
<p>
|
|
Se soportan coincidencias con certificados wildcard para casos específicos: una
|
|
entrada subjectAltName del tipo dNSName, o atributos CN que comienzan con
|
|
<code>*.</code> coincidirán con cualquier nombre de host del mismo número de
|
|
elementos de nombre y el mismo sufijo.
|
|
P. ej. <code>*.example.org</code> coinciderá con <code>foo.example.org</code>,
|
|
pero no coincidirá con <code>foo.bar.example.org</code>, porque el número de
|
|
elementos en el nombre de host respectivo es diferente.
|
|
</p>
|
|
|
|
<p>
|
|
Esta característica fue introducida en 2.4.5 y sustituye el comportamiento de
|
|
la directiva <directive module="mod_ssl">SSLProxyCheckPeerCN</directive>, que
|
|
sólo comprobaba el valor exacto en el primer atributo CN contra el nombre de
|
|
host. Sin embargo, muchos usuarios estaban confundidos por el comportamiento de
|
|
usar estas directivas individualmente, así que el comportamiento mutuo de las
|
|
directivas <code>SSLProxyCheckPeerName</code> y <code>SSLProxyCheckPeerCN</code>
|
|
fue mejorado en la versión 2.4.21. Vea la descripción de la directiva
|
|
<directive module="mod_ssl">SSLProxyCheckPeerCN</directive> para el
|
|
comportamiento original y detalles de estas mejoras.
|
|
</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyEngine</name>
|
|
<description>Interruptor de Operación del Motor de Proxy SSL</description>
|
|
<syntax>SSLProxyEngine on|off</syntax>
|
|
<default>SSLProxyEngine off</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva activa el uso del motor de protocolo SSL/TLS para proxy. Esto
|
|
se usa actualmente dentro de una sección
|
|
<directive module="core" type="section">VirtualHost</directive> para activar el
|
|
uso de proxy con SSL/TLS en un host virtual en particular. Por defecto el Motor
|
|
de Protocolo SSL/TLS está desactivado para tanto el servidor principal como todos
|
|
los hosts virtuales.</p>
|
|
|
|
<p>Tenga en cuenta que la directiva <directive>SSLProxyEngine</directive> no
|
|
debería en general, ser incluida en un host virtual que actuará como forward
|
|
proxy (usando las directivas
|
|
<directive module="mod_proxy" type="section">Proxy</directive>
|
|
o <directive module="mod_proxy">ProxyRequests</directive>).
|
|
<directive>SSLProxyEngine</directive> no es necesario para activar un servidor
|
|
forward proxy para hacer proxy de peticiones SSL/TLS.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
<VirtualHost _default_:443>
|
|
SSLProxyEngine on
|
|
#...
|
|
</VirtualHost>
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyProtocol</name>
|
|
<description>Configure sabores de protocolo SSL utilizables para uso de
|
|
proxy</description>
|
|
<syntax>SSLProxyProtocol [+|-]<em>protocolo</em> ...</syntax>
|
|
<default>SSLProxyProtocol all -SSLv3</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<!-- XXX Why does this have an override and not .htaccess context? -->
|
|
<p>
|
|
Esta directiva puede usarse para controlar los sabores de protocolo SSL que
|
|
mod_ssl debería usar cuando establece si entorno de servidor para proxy. sólo
|
|
conectará con servidores usando uno de sus protocolos facilitados.</p>
|
|
<p>Por favor vea <directive module="mod_ssl">SSLProtocol</directive> para
|
|
información adicional.
|
|
</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCipherSuite</name>
|
|
<description>Conjunto de Cifrados disponibles para negociación en el saludo SSL
|
|
de proxy</description>
|
|
<syntax>SSLProxyCipherSuite <em>especificación-de-cifrado</em></syntax>
|
|
<default>SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Equivalente a <directive module="mod_ssl">SSLCipherSuite</directive>, pero
|
|
para la conexión de proxy.
|
|
Por favor consulte <directive module="mod_ssl">SSLCipherSuite</directive>
|
|
para información adicional.</p>
|
|
</usage>
|
|
|
|
</directivesynopsis>
|
|
<directivesynopsis>
|
|
<name>SSLProxyCACertificatePath</name>
|
|
<description>Directorio de Certificados CA codificados en PEM para la
|
|
Autenticación de Servidor Remoto</description>
|
|
<syntax>SSLProxyCACertificatePath <em>ruta-al-directorio</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el directorio donde guarda los Certificados de
|
|
Autoridades de Certificación (CAs) de los servidores remotos a los que conecta.
|
|
Estos se usan para verificar el certificado del servidor remoto en la
|
|
Autenticación de Servidor Remoto.</p>
|
|
|
|
<p>
|
|
Los ficheros en este directorio tienen que estar codificados en PEM y se accede
|
|
a ellos a través de nombres de ficheros con hash. Así que generalmente no puede
|
|
tan sólo colocar los ficheros de Certificado ahí: también tiene que crear
|
|
enlaces simbólicos llamados <em>valor-de-hash</em><code>.N</code>. Y debería
|
|
asegurarse siempre de que este directorio contiene los enlaces símbólicos
|
|
apropiados.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCACertificatePath "/usr/local/apache2/conf/ssl.crt/"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCACertificateFile</name>
|
|
<description>Fichero de Certificados CA concatenados codificados en PEM para
|
|
la Autenticación Remota del Servidor</description>
|
|
<syntax>SSLProxyCACertificateFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el fichero <em>todo-en-uno</em> donde ensambla los
|
|
Certificados de Autoridades de Certificación (CA) de los <em>servidores
|
|
remotos</em> a los que conecta. Estos se usan como Autenticación de Servidor
|
|
Remoto. Tal fichero es simplemente la concatenación de varios ficheros de
|
|
Certificado codificados en PEM en orden de preferencia. Esto se puede usar
|
|
alternativamente y/o adicionalmente a
|
|
<directive module="mod_ssl">SSLProxyCACertificatePath</directive>.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle-remote-server.crt"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCARevocationPath</name>
|
|
<description>Directorio de CRLs de CA codificadas en PEM para la Autenticación
|
|
Remota de Servidor</description>
|
|
<syntax>SSLProxyCARevocationPath <em>ruta-al-directorio</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el directorio donde se alojan las Listas de Revocación de
|
|
Certificado (CRL) de las Autoridades de Certificación (CA) de los servidores a
|
|
los que conecta. Estas se usan para revocar el certificado del servidor remoto
|
|
en la Autenticación del Servidor Remoto.</p>
|
|
<p>
|
|
Los ficheros en este directorio tienen que ser codificados en PEM y se acceden
|
|
con nombres de ficheros con hash. Así que generalmente no sólo tiene que poner
|
|
los ficheros CRL ahí. También tiene que crear enlaces simbólicos llamados
|
|
<em>valor-de-hash</em><code>.rN</code>. Y siempre debería asegurarse de que este
|
|
directorio tiene los enlaces simbólicos apropiados.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCARevocationPath "/usr/local/apache2/conf/ssl.crl/"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCARevocationFile</name>
|
|
<description>Fichero de CRLs de CA codificados en PEM concatenados para la
|
|
Autenticación Remota de Servidor</description>
|
|
<syntax>SSLProxyCARevocationFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el fichero <em>todo-en-uno</em> donde puede ensamblar
|
|
las Listas de Revocación de Certificados (CRL) de las Autoridades de
|
|
Certificación (CA) de los <em>servidores remotos</em> a los que conecta. Estos
|
|
se usan para la Autenticación Remota de Servidor. Tal fichero es simplemente la
|
|
concatenación de varios ficheros CRL codificados en PEM, en orden de preferencia.
|
|
Esto se puede usar alternativamente a/o adicionalmente a
|
|
<directive module="mod_ssl">SSLProxyCARevocationPath</directive>.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCARevocationFile "/usr/local/apache2/conf/ssl.crl/ca-bundle-remote-server.crl"
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyCARevocationCheck</name>
|
|
<description>Activa la comprobación de revocación basada en CRL para la
|
|
Autenticación Remota de Servidor</description>
|
|
<syntax>SSLProxyCARevocationCheck chain|leaf|none</syntax>
|
|
<default>SSLProxyCARevocationCheck none</default>
|
|
<contextlist><context>server config</context> <context>virtual host</context>
|
|
<context>proxy section</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Activa la comprobación de listas de revocación de certificado (CRL) para
|
|
los <em>servidores remotos</em> a los que conecta. Al menos una de las directivas
|
|
<directive module="mod_ssl">SSLProxyCARevocationFile</directive>
|
|
o <directive module="mod_ssl">SSLProxyCARevocationPath</directive> debe estar
|
|
configurada. Cuando se configura a <code>chain</code> (configuración recomendada),
|
|
las comprobaciones de CRL se aplican a todos los certificados en la cadena de
|
|
certificación, mientras que configurándolo a <code>leaf</code> limita las
|
|
comprobaciones al certificado firmado final.
|
|
</p>
|
|
|
|
<note>
|
|
<title>Cuando se configura a <code>chain</code> o <code>leaf</code>,
|
|
las CRLs <em>deben</em> estar disponibles para la validación con éxito.</title>
|
|
|
|
<p>
|
|
Antes de la versión 2.4.15, la comprobación de CRL en mod_ssl también tenía
|
|
éxito cuando no se encontraban CRLs en ninguna de las ubicaciones configuradas
|
|
con <directive module="mod_ssl">SSLProxyCARevocationFile</directive>
|
|
o <directive module="mod_ssl">SSLProxyCARevocationPath</directive>.
|
|
Con la introducción de esta directiva, el comportamiento ha cambiado: cuando
|
|
la comprobación está habilitada, las CRLs <em>deben</em> estar presentes para
|
|
que la validación pueda tener éxito - si no fallará con un error
|
|
<code>"unable to get certificate CRL"</code>.
|
|
</p>
|
|
</note>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLProxyCARevocationCheck chain
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLUserName</name>
|
|
<description>Nombre de variable para determinar el nombre de usuario</description>
|
|
<syntax>SSLUserName <em>nombre de variable</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva configura el campo "usuario" en el objeto de solicitud de Apache.
|
|
Esto se usa por módulos menores para identificar el usuario con una cadena
|
|
de caracteres. En particular esto puede causar que la variable de entorno
|
|
<code>REMOTE_USER</code> sea configurada. El <em>nombre de variable</em> puede
|
|
ser cualquiera de las <a href="#envvars">variables de entorno SSL</a>.</p>
|
|
|
|
<p>Cuando se activa la opción <code>FakeBasicAuth</code>, esta directiva
|
|
controla en su lgar el valor del nombre de usuario embebido dentro de la
|
|
cabecera de autenticación básica (vea <a href="#ssloptions">SSLOptions</a>).</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLUserName SSL_CLIENT_S_DN_CN
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLHonorCipherOrder</name>
|
|
<description>Opción para forzar el orden de preferencia de cifrados del
|
|
servidor</description>
|
|
<syntax>SSLHonorCipherOrder on|off</syntax>
|
|
<default>SSLHonorCipherOrder off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Cuando se selecciona un cifrado durante el saludo SSLv3 o TLSv1, normalmente
|
|
se selecciona en función de las preferencias del cliente. Con esta directiva
|
|
activada, se usará la preferencia del servidor en su lugar.</p>
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLHonorCipherOrder on
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCryptoDevice</name>
|
|
<description>Activar el uso de un hardware acelerador criptográfico</description>
|
|
<syntax>SSLCryptoDevice <em>engine</em></syntax>
|
|
<default>SSLCryptoDevice builtin</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>
|
|
Esta directiva activa el uso de una placa hardware acelerador criptográfico
|
|
para aliviar parte de la carga del procesamiento de SSL. Esta directiva
|
|
sólo puede usarse si el kit de herramientas SSL está compilado con soporte de
|
|
"engine"; OpenSSL 0.9.7 y posteriores versiones tienen soporte de "engine" por
|
|
defecto, en versiones Openssl 0.9.6 debe usarse "-engine".</p>
|
|
|
|
<p>Para descubrir qué nombres de "engine" están soportados, ejecute el comando
|
|
"<code>openssl engine</code>".</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
# For a Broadcom accelerator:
|
|
SSLCryptoDevice ubsec
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPEnable</name>
|
|
<description>Activa la validación OCSP para la cadena de certificados del
|
|
cliente</description>
|
|
<syntax>SSLOCSPEnable on|off</syntax>
|
|
<default>SSLOCSPEnable off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Esta opción activa la validación OCSP de la cadena de certificados del
|
|
cliente. Si esta opción está activada, los certificados en la cadena de
|
|
certificados del cliente se validarán contra un respondedor OCSP después de que
|
|
se hayan hecho las verificaciones normales (incluidas las comprobaciones de
|
|
CRL).</p>
|
|
|
|
<p>El respondedor OCSP utilizado o bien se extrae del mismo certificado, o
|
|
derivado de la configuración; vea las directivas
|
|
<directive module="mod_ssl">SSLOCSPDefaultResponder</directive> y
|
|
<directive module="mod_ssl">SSLOCSPOverrideResponder</directive>
|
|
directives.</p>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLVerifyClient on
|
|
SSLOCSPEnable on
|
|
SSLOCSPDefaultResponder "http://responder.example.com:8888/responder"
|
|
SSLOCSPOverrideResponder on
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPDefaultResponder</name>
|
|
<description>Configura la URI por defecto del respondedor para la validación
|
|
OCSP</description>
|
|
<syntax>SSLOCSDefaultResponder <em>uri</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Esta opción configura el respondedor OCSP por defecto a usar. Si
|
|
<directive module="mod_ssl">SSLOCSPOverrideResponder</directive> no está
|
|
activada, la URI facilitada se usará si no hay una URI de respondedor en el
|
|
certificado que está siendo verificado.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPOverrideResponder</name>
|
|
<description>Fuerza el uso de una URI de respondedor por defecto para la
|
|
validación OCSP</description>
|
|
<syntax>SSLOCSPOverrideResponder on|off</syntax>
|
|
<default>SSLOCSPOverrideResponder off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Esta opción fuerza que se use el respondedor OCSP por defecto para la
|
|
validación OCSP del certificado, independientemente de si el certificado que
|
|
se está validando referencia un respondedor OCSP o no.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPResponseTimeSkew</name>
|
|
<description>Desviación máxima de tiempo permitida para la validación de la
|
|
respuesta OCSP</description>
|
|
<syntax>SSLOCSPResponseTimeSkew <em>segundos</em></syntax>
|
|
<default>SSLOCSPResponseTimeSkew 300</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Esta opción configura el tiempo máximo permitido de desviación para las
|
|
respuestas OCSP
|
|
(cuando se están comprobando sus campos <code>thisUpdate</code> y
|
|
<code>nextUpdate</code>).</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPResponseMaxAge</name>
|
|
<description>Edad máxima permitida para las respuestas OCSP</description>
|
|
<syntax>SSLOCSPResponseMaxAge <em>segundos</em></syntax>
|
|
<default>SSLOCSPResponseMaxAge -1</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Esta opción configura la edad máxima permitida de las respuestas
|
|
OCSP. El valor por defecto (<code>-1</code>) no fuerza una edad máxima, lo que
|
|
significa que las respuestas OCSP se consideran válidas mientras su campo
|
|
<code>nextUpdate</code> está en una fecha futura.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPResponderTimeout</name>
|
|
<description>Expiración de las consultas OCSP</description>
|
|
<syntax>SSLOCSPResponderTimeout <em>segundos</em></syntax>
|
|
<default>SSLOCSPResponderTimeout 10</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Esta opción configura el tiempo de expiración para las consultas a los
|
|
respondedores OCSP, cuando <directive module="mod_ssl">SSLOCSPEnable</directive>
|
|
está activado.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPUseRequestNonce</name>
|
|
<description>Usar un nonce dentro de las consultas OCSP</description>
|
|
<syntax>SSLOCSPUseRequestNonce on|off</syntax>
|
|
<default>SSLOCSPUseRequestNonce on</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.10 y posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta opción determina si las consultas a respondedores OCSP deberían contener
|
|
un "nonce" o no. Por defecto, una consulta "nonce" siempre se comprueba y se usa
|
|
contra la de la respuesta. Cuando el responderdor no usa "nonce"s (p.ej. Microsoft
|
|
OCSP Responder), esta opción debería estar configuada a
|
|
<code>off</code>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPNoverify</name>
|
|
<description>Salta la verificación de certificados de respondedor
|
|
OCSP</description>
|
|
<syntax>SSLOCSPNoverify <em>On/Off</em></syntax>
|
|
<default>SSLOCSPNoverify Off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.26 y posterior, si se usa OpenSSL 0.9.7 o
|
|
posterior</compatibility>
|
|
<usage>
|
|
<p>Salta la verificación de certificados del respondedor OCSP, generalmente
|
|
útil cuando se comprueba un servidor OCSP.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPResponderCertificateFile</name>
|
|
<description>Conjunto de certificados de respondedor OCSP confiables codificados
|
|
en PEM</description>
|
|
<syntax>SSLOCSPResponderCertificateFile <em>fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.26 y posterior, si se usa con OpenSSL
|
|
0.9.7 o posterior</compatibility>
|
|
<usage>
|
|
|
|
<p>Esto aporta una lista de certificados confiables de respondedor OCSP para
|
|
ser usados durante la validación de certificados de respondedor OCSP. Se confía
|
|
en los certificados facilitados de manera implícita sin ninguna comprobación
|
|
posterior. Esto se usa generalmente cuando el certificado del respondedor
|
|
OCSP es autofirmado o se omite de la respuesta.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOCSPProxyURL</name>
|
|
<description>URL de Proxy a utilizar para las consultas OCSP</description>
|
|
<syntax>SSLOCSPProxyURL <em>url</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.19 y posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta opción permite configurar la URL de un proxy HTTP que debería usarse para
|
|
todas las consultas a respondedores OCSP.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLInsecureRenegotiation</name>
|
|
<description>Opción para activar soporte de renegociación
|
|
insegura</description>
|
|
<syntax>SSLInsecureRenegotiation on|off</syntax>
|
|
<default>SSLInsecureRenegotiation off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8m o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Tal y como se especificó originalmente, todas las versiones de protocolo SSL y
|
|
TLS (incluído TLS/1.2) eran vulnerables a ataques tipo Man-in-the-Middle
|
|
(<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2009-3555">CVE-2009-3555</a>)
|
|
durante una renegociación. Esta vulnerabilidad permitía a un atancante poner
|
|
un prefijo a un texto plano específico en la petición HTTP tal y como se veía
|
|
en el servidor web. Se desarrolló una extensión del protocolo para esta vulnerabilidad si estaba soportada tanto por el cliente como por el
|
|
servidor.</p>
|
|
|
|
<p>Si <module>mod_ssl</module> está compilado contra la versión OpenSSL 0.9.8m
|
|
o posterior, por defecto la renegociación sólo está soportada por clientes
|
|
que tengan soporte para la nueva extensión del protocolo. Si esta directiva está
|
|
activada, la renegociación se permitirá con los clientes antiguos (no
|
|
parcheados), aunque de manera insegura.</p>
|
|
|
|
<note type="warning"><title>Aviso de Seguridad</title>
|
|
<p>Si se activa esta directiva, las conexiones SSL serán vulnerables a ataques
|
|
Man-in-the-Middle de prefijo tal y como se describe en
|
|
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2009-3555">CVE-2009-3555</a>.</p>
|
|
</note>
|
|
|
|
<example><title>Ejemplo</title>
|
|
<highlight language="config">
|
|
SSLInsecureRenegotiation on
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>La variable de entorno <code>SSL_SECURE_RENEG</code> se puede usar desde un
|
|
script CGI o desde SSI para determinar si la renegociación segura está soportada
|
|
para la conexión SSL en cuestión.</p>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLUseStapling</name>
|
|
<description>Activa stapling de las respuestas OCSP en el saludo
|
|
TLS</description>
|
|
<syntax>SSLUseStapling on|off</syntax>
|
|
<default>SSLUseStapling off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta opción activa el stapling de OCSP, tal y como se define en la extensión
|
|
TLS "Solicitud de Estado de Certificado" especificada en el RFC 6066. Si está
|
|
activado (y solicitado por el cliente), mod_ssl incluirá una respuesta OCSP de
|
|
su propio certificado en el saludo TLS. Configurar una
|
|
<directive module="mod_ssl">SSLStaplingCache</directive> es un pre-requisito para
|
|
activar stapling de OCSP.</p>
|
|
|
|
<p>El stapling de OCSP releva al cliente de consultar el respondedor OCSP por si
|
|
mismo, pero debería tenerse en cuenta que con la especificación RFC 6066, la
|
|
respuesta de <code>CertificateStatus</code> del servidor podría sólo incluir
|
|
una respuesta OCSP de un sólo certificado. Para los certificados de servidor
|
|
con certificados de CA intermedias en su cadena (lo típico hoy en día),
|
|
stapling en su implementación actual por tanto sólo consigue su objetivo
|
|
parcialmente de "ahorrar varias peticiones y consumo de recursos" - vea también
|
|
el <a href="http://www.ietf.org/rfc/rfc6961.txt">RFC 6961</a>
|
|
(Extensión de TLS del Estado de Múltiples Certificados).
|
|
</p>
|
|
|
|
<p>Cuando el stapling de OCSP está activado, se usa el mutex
|
|
<code>ssl-stapling</code> para controlar el acceso a la cahe de stapling de OCSP
|
|
para prevenir corrupción, y se usa el mutex <code>sss-stapling-refresh</code>
|
|
para controlar los refrescos a las respuestas OCSP. Estos mutexes pueden ser
|
|
configurados usando la directiva
|
|
<directive module="core">Mutex</directive>.
|
|
</p>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingCache</name>
|
|
<description>Configura la cache del stapling de OCSP</description>
|
|
<syntax>SSLStaplingCache <em>tipo</em></syntax>
|
|
<contextlist><context>server config</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Configura la cache utilizada para almacenar las respuestas OCSP que se
|
|
incluyen en el saludo TLS si
|
|
<directive module="mod_ssl">SSLUseStapling</directive> está activada. La
|
|
coniguración de la cache es obligatoria para el stapling the OCSP. Con la
|
|
excepción de <code>none</code> y <code>nonenotnull</code>, se da soporte a
|
|
los mismos tipos de almacenamiento que con
|
|
<directive module="mod_ssl">SSLSessionCache</directive>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingResponseTimeSkew</name>
|
|
<description>Tiempo máximo permitido para la validación del stapling
|
|
OCSP</description>
|
|
<syntax>SSLStaplingResponseTimeSkew <em>segundos</em></syntax>
|
|
<default>SSLStaplingResponseTimeSkew 300</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta opción configura el tiempo máximo de desviación cuando mod_ssl comprueba
|
|
los campos <code>thisUpdate</code> y <code>nextUpdate</code> de las respuestas
|
|
OCSP que se incluyen en el saludo TLS (Stapling de OCSP). sólo aplicable si
|
|
<directive module="mod_ssl">SSLUseStapling</directive> está activada.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingResponderTimeout</name>
|
|
<description>Tiempo máximo para las consultas de stapling de OCSP</description>
|
|
<syntax>SSLStaplingResponderTimeout <em>segundos</em></syntax>
|
|
<default>SSLStaplingResponderTimeout 10</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta opción configura el tiempo máximo para consultas a respondedores OCSP
|
|
cuando <directive module="mod_ssl">SSLUseStapling</directive> está activada y
|
|
mod_ssl está consultando a un respondedor por motivos de stapling de OCSP.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingResponseMaxAge</name>
|
|
<description>Edad máxima permitida para respuesta de stapling OCSP</description>
|
|
<syntax>SSLStaplingResponseMaxAge <em>segundos</em></syntax>
|
|
<default>SSLStaplingResponseMaxAge -1</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta opción configura la edad máxima permitida ("frescura") cuando se
|
|
consideran las respuestas OCSP para stapling, p. ej. cuando
|
|
<directive module="mod_ssl">SSLUseStapling</directive> está activada.
|
|
El valor por defecto (<code>-1</code>) no fuerza una edad máxima, lo que
|
|
significa que las respuestas OCSP se consideran válidas mientras el valor del
|
|
campo <code>nextUpdate</code> está en una fecha futura.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingStandardCacheTimeout</name>
|
|
<description>Número de segundos antes de expirar las respuestas en la cache del
|
|
stapling de OCSP</description>
|
|
<syntax>SSLStaplingStandardCacheTimeout <em>segundos</em></syntax>
|
|
<default>SSLStaplingStandardCacheTimeout 3600</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Configura el límite de tiempo en segundos antes de que las respuestas en el
|
|
cache de stapling de OCSP (configuradas con
|
|
<directive module="mod_ssl">SSLStaplingCache</directive>) expiren. Esta
|
|
directiva aplica a respuestas <em>válidas</em>, mientras que
|
|
<directive module="mod_ssl">SSLStaplingErrorCacheTimeout</directive> se
|
|
usa para controlar el límite de tiempo para respuestas inválidas/indisponibles.
|
|
</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingReturnResponderErrors</name>
|
|
<description>Pasa los errores relacionados con stapling de OCSP al cliente
|
|
</description>
|
|
<syntax>SSLStaplingReturnResponderErrors on|off</syntax>
|
|
<default>SSLStaplingReturnResponderErrors on</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Cuando se activa, mod_ssl pasará las respuestas de consultas sin éxito
|
|
relacionadas con el stapling OCSP (tales como respuestas con un estado general
|
|
que no sea otro que "con éxito", respuestas con un estado de certificado que no
|
|
sea otro que "bueno", respuestas de expirado, etc.) al cliente.
|
|
Si la configura a <code>off</code>, sólo respuestas indicando un estado de
|
|
certificado "bueno" se incluirán en el saludo TLS.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingFakeTryLater</name>
|
|
<description>Sintetiza respuestas "tryLater" para consultas fallidas de stapling
|
|
de OCSP</description>
|
|
<syntax>SSLStaplingFakeTryLater on|off</syntax>
|
|
<default>SSLStaplingFakeTryLater on</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Cuando se activa y una consulta de stapling a un respondedor OCSP falla,
|
|
mod_ssl sintetizará una respuesta "tryLater" para el cliente. sólo efectiva si
|
|
<directive module="mod_ssl">SSLStaplingReturnResponderErrors</directive>
|
|
también está activada.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingErrorCacheTimeout</name>
|
|
<description>Número de segundos antes de expirar respuestas inválidas en la
|
|
cache del stapling de OCSP</description>
|
|
<syntax>SSLStaplingErrorCacheTimeout <em>segundos</em></syntax>
|
|
<default>SSLStaplingErrorCacheTimeout 600</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Configura el tiempo límite en segundos antes de que las respuestas
|
|
<em>inválidas</em> en la cache de stapling OCSP (configuradas con
|
|
<directive module="mod_ssl">SSLStaplingCache</directive>) expiren. Para
|
|
configurar el tiempo límite de respuestas válidas, vea
|
|
<directive module="mod_ssl">SSLStaplingStandardCacheTimeout</directive>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLStaplingForceURL</name>
|
|
<description>Sobreescribe la URI especificada por el respondedor OCSP
|
|
especificada en la extensión AIA del certificado</description>
|
|
<syntax>SSLStaplingForceURL <em>uri</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible si se usa OpenSSL 0.9.8h o posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva sobreescribe la URI de un respondedor OCSP obtenida de la
|
|
extensión authorityInfoAccess (AIA) del certificado.
|
|
Un uso potencial puede ser cuando se usa un proxy para hacer consultas OCSP.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLSessionTicketKeyFile</name>
|
|
<description>Clave persistente de encriptación/desencriptación para ticket de
|
|
sesión TLS</description>
|
|
<syntax>SSLSessionTicketKeyFile <em>ruta-al-fichero</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.0 y posterior, si se usaOpenSSL 0.9.8h o
|
|
posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Opcionalmente configura una clave secreta para la encriptación y
|
|
desencriptación de tickets de sesión TLS, tal y como se define en
|
|
<a href="http://www.ietf.org/rfc/rfc5077.txt">RFC 5077</a>. Principalmente
|
|
adecuado para entornos clusterizados donde la información de sesiones TLS
|
|
debería ser compartida entre varios nodos. Para configuraciones de una sola
|
|
instancia http, es recomendable <em>no</em> configurar un fichero clave
|
|
de ticket, pero si depender de varias claves generadas (al azar) por mod_ssl
|
|
en el arranque, en su lugar.</p>
|
|
<p>El fichero clave de ticket debe contener 48 bytes de datos aleatorios,
|
|
preferiblemente credos de una fuente con alta entropía. En un sistema basado en
|
|
Unix, un fichero clave de ticket puede generarse como sigue:</p>
|
|
|
|
<example>
|
|
dd if=/dev/random of=/path/to/file.tkey bs=1 count=48
|
|
</example>
|
|
|
|
<p>Las claves de ticket deberían rotarse (sustituirse) frecuentemente, puesto
|
|
que esta es la única forma de invalidar sesiones de ticket existentes - Openssl
|
|
actualmente no permite especificar un tiempo límite de validez de tickets. Una
|
|
nueva clave de ticket sólo se usa después de reiniciar el servidor web.
|
|
Todas las sesiones de tickets existentes son inválidas después de un
|
|
reinicio.</p>
|
|
|
|
<note type="warning">
|
|
<p>El fichero clave de ticket contiene material sensible de claves y debería
|
|
protegerse con permisos de fichero de una manera similar a las que se deben
|
|
usar para los ficheros utilizados con
|
|
<directive module="mod_ssl">SSLCertificateKeyFile</directive>.</p>
|
|
</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLCompression</name>
|
|
<description>Activa la compresión a nivel de SSL</description>
|
|
<syntax>SSLCompression on|off</syntax>
|
|
<default>SSLCompression off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.3 y posterior, si se usa OpenSSL 0.9.8 o
|
|
posterior; disponible en el contexto de virtualhost si se usa OpenSSL 1.0.0 o
|
|
posterior. El valor por defecto solía ser <code>on</code> en la versión
|
|
2.4.3</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva permite activar la compresión a nivel de SSL.</p>
|
|
<note type="warning">
|
|
<p>Activar la compresión provoca problemas de seguridad en la mayoría de las
|
|
configuraciones (como el conocido ataque CRIME).</p>
|
|
</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLSessionTickets</name>
|
|
<description>Activa o desactiva el uso de tickets de sesión TLS</description>
|
|
<syntax>SSLSessionTickets on|off</syntax>
|
|
<default>SSLSessionTickets on</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.11 y posterior, si se usa OpenSSL 0.9.8f
|
|
o posterior.</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva permite activar o desactivar el uso de los tickets de sesión
|
|
TLS (RFC 5077).</p>
|
|
<note type="warning">
|
|
<p>Los tickets de sesión TLS se activan por defecto. Usarlos sin reiniciar el
|
|
servidor web con una frecuencia apropiada (p. ej. diariamente) compromete
|
|
un "forward secrecy" perfecto</p>
|
|
</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLOpenSSLConfCmd</name>
|
|
<description>Configura parámetros OpenSSL a través de su API <em>SSL_CONF</em>
|
|
</description>
|
|
<syntax>SSLOpenSSLConfCmd <em>nombre-de-comando</em>
|
|
<em>parámetro-de-comando</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.8 y posterior, si se usa OpenSSL 1.0.2 o
|
|
posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva expone <em>SSL_CONF</em> de la API de OpenSSL para mod_ssl,
|
|
permitiendo una configuración flexible de parámetros para OpenSSL sin la
|
|
necesidad de implementar directivas adicionales de <module>mod_ssl</module>
|
|
cuando se añaden nuevas características a OpenSSL.</p>
|
|
|
|
<p>El conjunto de comandos disponibles de
|
|
<directive>SSLOpenSSLConfCmd</directive> depende de la versión OpenSSL utilizada
|
|
para <module>mod_ssl</module> (al menos la versión 1.0.2 es necesaria). Para una
|
|
lista de nombres de comandos
|
|
soportados, vea la sección <em>Comandos soportados para fichero de
|
|
configuración</em> en la página de manual
|
|
<a href="http://www.openssl.org/docs/man1.0.2/ssl/SSL_CONF_cmd.html#SUPPORTED-CONFIGURATION-FILE-COMMANDS">SSL_CONF_cmd(3)</a>
|
|
de OpenSSL.</p>
|
|
|
|
<p>Algunos de los comandos de <directive>SSLOpenSSLConfCmd</directive> se pueden
|
|
usar como alternativa a directivas existentes (tales como
|
|
<directive module="mod_ssl">SSLCipherSuite</directive> o
|
|
<directive module="mod_ssl">SSLProtocol</directive>),
|
|
aunque debería tenerse en cuenta que la sintaxis / valores disponibles para
|
|
parámetros pueden ser diferentes.</p>
|
|
|
|
<example><title>Ejemplos</title>
|
|
<highlight language="config">
|
|
SSLOpenSSLConfCmd Options -SessionTicket,ServerPreference
|
|
SSLOpenSSLConfCmd ECDHParameters brainpoolP256r1
|
|
SSLOpenSSLConfCmd ServerInfoFile "/usr/local/apache2/conf/server-info.pem"
|
|
SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"
|
|
SSLOpenSSLConfCmd SignatureAlgorithms RSA+SHA384:ECDSA+SHA256
|
|
</highlight>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section" idtype="section">
|
|
<name>SSLPolicyDefine</name>
|
|
<description>Define un conjunto de nombres de configuraciones SSL</description>
|
|
<syntax><SSLPolicyDefine <em>nombre</em>></syntax>
|
|
<contextlist><context>server config</context></contextlist>
|
|
<compatibility>Disponible in httpd 2.4.30 y posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva define un conjunto de configuraciones SSL y les da un nombre.
|
|
Este nombre se puede usar en las directivas <directive>SSLPolicy</directive> y
|
|
<directive>SSLProxyPolicy</directive> para aplicar esta configuración en el
|
|
contexto actual.</p>
|
|
|
|
<example><title>Definición y Uso de una Política</title>
|
|
<highlight language="config">
|
|
<SSLPolicyDefine safe-stapling>
|
|
SSLUseStapling on
|
|
SSLStaplingResponderTimeout 2
|
|
SSLStaplingReturnResponderErrors off
|
|
SSLStaplingFakeTryLater off
|
|
SSLStaplingStandardCacheTimeout 86400
|
|
</SSLPolicyDefine>
|
|
|
|
...
|
|
<VirtualHost...>
|
|
SSLPolicy safe-stapling
|
|
...
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Por un lado, esto puede hacer que la configuración del servidor sea mucho
|
|
más fácil de <em>leer</em> y <em>mantener</em>. Por otro lado, está destinada
|
|
a hacer SSL más fácil y seguro de <em>usar</em>. Para lo último, Apache httpd
|
|
viene con un conjunto de políticas pre-definidas que reflejan buenas prácticas
|
|
de código abierto. La política "modern", por ejemplo, lleva las configuraciones
|
|
para hacer que su servidor trabaje de manera segura y compatible con navegadores
|
|
actuales.</p>
|
|
|
|
<p>La lista de políticas predefinidas en su Apache pueden obtenerse lanzando
|
|
el siguiente comando. Esta lista muestra las configuraciones detalladas con
|
|
las que está definida cada política:</p>
|
|
|
|
<example><title>Lista todas las Políticas Definidas</title>
|
|
<highlight language="sh">
|
|
httpd -t -D DUMP_SSL_POLICIES
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Esta directiva sólo se puede usar en la configuración del servidor (contexto
|
|
global). Puede usar la mayoría de las directivas SSL*, sin embargo algunas sólo
|
|
se pueden usar una vez y no se pueden utilizar dentro de definiciones de
|
|
política. Estas son <directive>SSLCryptoDevice</directive>,
|
|
<directive>SSLRandomSeed</directive>,
|
|
<directive>SSLSessionCache</directive> y
|
|
<directive>SSLStaplingCache</directive>.
|
|
</p>
|
|
|
|
<p>Dos políticas no pueden tener el mismo nombre. Sin embargo, las políticas se
|
|
pueden redefinir:</p>
|
|
|
|
<example><title>Sobreescribir Políticas</title>
|
|
<highlight language="config">
|
|
<SSLPolicyDefine proxy-trust>
|
|
SSLProxyVerify require
|
|
</SSLPolicyDefine>
|
|
...
|
|
<SSLPolicyDefine proxy-trust>
|
|
SSLProxyVerify none
|
|
</SSLPolicyDefine>
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Las definiciones de Política se <em>añaden</em> en el orden que aparecen,
|
|
pero se <em>aplican</em> cuando se ha leido toda la configuración. Esto
|
|
significa que cualquier uso de 'proxy-trust' significará 'SSLProxyVerify none'.
|
|
La primera definición no tiene ningún efecto. Esto permite que las políticas
|
|
pre-instaladas sean sustituidas sin la necesidad de desactivarlas.</p>
|
|
|
|
<p>Además de reemplazar políticas, redefiniciones pueden alterar un aspecto de
|
|
una política:</p>
|
|
|
|
<example><title>Policy Redefine</title>
|
|
<highlight language="config">
|
|
<SSLPolicyDefine proxy-trust>
|
|
SSLProxyVerify require
|
|
</SSLPolicyDefine>
|
|
...
|
|
<SSLPolicyDefine proxy-trust>
|
|
SSLPolicy proxy-trust
|
|
SSLProxyVerifyDepth 10
|
|
</SSLPolicyDefine>
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Esto re-utiliza todas las configuraciones de un 'proxy-trust' previo y añade
|
|
una directiva encima de él. Todas las demás todavía aplican. Esto es muy útil
|
|
cuando las políticas pre-definidas (por Apache mismo o un distribuidor) son
|
|
<em>casi</em> como lo que necesitas. Previamente, tales definiciones fueron
|
|
(copiadas y) editadas. Esto hacía que actualizarlas fuera dificil. Ahora pueden
|
|
configurarse así:</p>
|
|
|
|
<example><title>Ajusta una Política Pre-Definida</title>
|
|
<highlight language="config">
|
|
Include ssl-policies.conf
|
|
|
|
<SSLPolicyDefine modern>
|
|
SSLPolicy modern
|
|
SSLProxyVerify none
|
|
</SSLPolicyDefine>
|
|
</highlight>
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLPolicy</name>
|
|
<description>Aplica una Política SSL por nombre</description>
|
|
<syntax>SSLPolicy <em>nombre</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.30 y posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva aplica el conjunto de directivas SSL definidas bajo
|
|
'nombre' (vea <directive type="section">SSLPolicyDefine</directive>) como las
|
|
configuraciones <em>base</em> en el contexto actual. Apache viene con las
|
|
siguientes políticas pre-definidas de Mozilla, los desarrolladores del
|
|
navegador Firefox
|
|
(<a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations">
|
|
vea aquí para una descripción detallada de ellas.</a>):
|
|
</p>
|
|
<ul>
|
|
<li><code>modern</code>: recomendada cuando su servidor es accesible desde
|
|
Internet. Funciona con todos los navegadores modernos, pero dispositivos
|
|
antiguos podrían no ser capaces de conectar.</li>
|
|
<li><code>intermediate</code>: el recurso si necesita dar soporte a clientes
|
|
antiguos (pero no muy antiguos).</li>
|
|
<li><code>old</code>: cuando necesita dar acceso a Windows XP/Internet
|
|
Explorer 7. El último recurso.</li>
|
|
</ul>
|
|
|
|
<p>Puede comprobar una descripciónm detallada de todas las políticas definidas
|
|
a través de la línea de comandos:</p>
|
|
<example><title>Listar Todas las Políticas Definidas</title>
|
|
<highlight language="sh">
|
|
httpd -t -D DUMP_SSL_POLICIES
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Una SSLPolicy define la línea base para el contexto en la que se utiliza. Eso
|
|
significa que cualquier otra diretiva SSL en el mismo contexto la sobreescribirá.
|
|
Como ejemplo de esto, vea el valor efectivo de
|
|
<directive>SSLProtocol</directive> en la siguiente configuración:</p>
|
|
|
|
<example><title>Precedencia de Política</title>
|
|
<highlight language="config">
|
|
<VirtualHost...> # efectivo en: 'all'
|
|
SSLPolicy modern
|
|
SSLProtocol all
|
|
</VirtualHost>
|
|
|
|
<VirtualHost...> # efectivo en: 'all'
|
|
SSLProtocol all
|
|
SSLPolicy modern
|
|
</VirtualHost>
|
|
|
|
SSLPolicy modern
|
|
<VirtualHost...> # efectivo en: 'all'
|
|
SSLProtocol all
|
|
</VirtualHost>
|
|
|
|
SSLProtocol all
|
|
<VirtualHost...> # efectivo en: '+TLSv1.2'
|
|
SSLPolicy modern
|
|
</VirtualHost>
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>Puede haber más de una política aplicada en un contexto. La últimas
|
|
sobreescribiendo las previas: :</p>
|
|
|
|
<example><title>Ordenando Políticas</title>
|
|
<highlight language="config">
|
|
<VirtualHost...> # protocolo efectivo: 'all -SSLv3'
|
|
SSLPolicy modern
|
|
SSLPolicy intermediate
|
|
</VirtualHost>
|
|
|
|
<VirtualHost...> # protocolo efectivo: '+TLSv1.2'
|
|
SSLPolicy intermediate
|
|
SSLPolicy modern
|
|
</VirtualHost>
|
|
</highlight>
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SSLProxyPolicy</name>
|
|
<description>Aplica directivas de tipo SSLProxy* en una SSLPolicy</description>
|
|
<syntax>SSLProxyPolicy <em>nombre</em></syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context></contextlist>
|
|
<compatibility>Disponible en httpd 2.4.30 y posterior</compatibility>
|
|
|
|
<usage>
|
|
<p>Esta directiva es similar a <directive>SSLPolicy</directive>, pero aplica
|
|
sólo a directivas de SSLProxy* definidas en la política. Esto ayuda cuando
|
|
necesita distintas políticas para los clientes y los backends:</p>
|
|
|
|
<example><title>Otras Políticas sólo para Proxy</title>
|
|
<highlight language="config">
|
|
SSLPolicy modern
|
|
SSLProxyPolicy intermediate
|
|
</highlight>
|
|
</example>
|
|
|
|
<p>En este ejemplo, la política 'modern' se aplica a los clientes y backends.
|
|
Entonces a las partes de los backend se sobreescriben con las configuraciones
|
|
de políticas de 'intermediate'.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|