Significado del conjunto de cifrado mod_ssl reunidos y orden de preferencia

0

Leí la descripción de la suite de cifrado de mod_ssl y entendí el significado de alias y palabras clave como ! + , etc. Pero no puedo entender cómo leer ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW completamente, especialmente cuando se trata de prioridad al usar + .

Cuando trato de usar openssl para entender cómo Apache interpreta a ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW entonces todavía no hay mucha ayuda, porque ALL: me sugiere que TODOS los cifrados deban venir, pero no lo es.

Además, en la siguiente página, ¿o / p está el conjunto de cifrado listado en orden de preferencia que elegiría Apache?

[apache1@hagrawal conf.d]$ openssl ciphers -v 'ALL!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW'
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
KRB5-DES-CBC3-MD5       SSLv3 Kx=KRB5     Au=KRB5 Enc=3DES(168) Mac=MD5 
KRB5-DES-CBC3-SHA       SSLv3 Kx=KRB5     Au=KRB5 Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA    SSLv3 Kx=DH       Au=DSS  Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA            SSLv3 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=SHA1
KRB5-RC4-MD5            SSLv3 Kx=KRB5     Au=KRB5 Enc=RC4(128)  Mac=MD5 
KRB5-RC4-SHA            SSLv3 Kx=KRB5     Au=KRB5 Enc=RC4(128)  Mac=SHA1
RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1
RC4-MD5                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5 
KRB5-DES-CBC-MD5        SSLv3 Kx=KRB5     Au=KRB5 Enc=DES(56)   Mac=MD5 
KRB5-DES-CBC-SHA        SSLv3 Kx=KRB5     Au=KRB5 Enc=DES(56)   Mac=SHA1
EDH-RSA-DES-CBC-SHA     SSLv3 Kx=DH       Au=RSA  Enc=DES(56)   Mac=SHA1
EDH-DSS-DES-CBC-SHA     SSLv3 Kx=DH       Au=DSS  Enc=DES(56)   Mac=SHA1
DES-CBC-SHA             SSLv3 Kx=RSA      Au=RSA  Enc=DES(56)   Mac=SHA1

Segunda pregunta:
Generalmente, el conjunto de cifrado de Apache se especifica como SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW , pero puede especificarse como SSLCipherSuite TLS_RSA_WITH_RC4_128_SHA , lo que significa que, en lugar de especificar el alias y conectarlos, especifica directamente el cifrado que quiero usar. Si intento esto, ¿puede estallar algo en mi Apache?

Intenté usar SSLCipherSuite TLS_RSA_WITH_RC4_128_SHA y obtuve un error inferior. Al menos Apache debería haber comenzado, ¿no?

[Tue Aug 18 07:53:02 2015] [info] Configuring server for SSL protocol
[Tue Aug 18 07:53:02 2015] [error] Unable to configure permitted SSL ciphers
[Tue Aug 18 07:53:02 2015] [error] SSL Library Error: 336646329 error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match

Estoy tratando de construir la siguiente preferencia de suites de cifrado.

SSL3-RSA-RSA-NONE-0-MD5
SSL3-RSA-RSA-NONE-0-SHA
SSL3-RSA-RSA-RC4-128-MD5
SSL3-RSA-RSA-RC4-128-SHA
SSL3-RSA-RSA-DES-56-SHA
SSL3-RSA-RSA-DES3-168-SHA
TLS1.0-RSA-RSA-AES-128-CBC-128-SHA
TLS1.0-RSA-RSA-AES-256-CBC-256-SHA
TLS1.2-RSA-RSA-NONE-0-SHA256
TLS1.2-RSA-RSA-AES-128-CBC-128-SHA256
TLS1.2-RSA-RSA-AES-256-CBC-256-SHA256
    
pregunta hagrawal 18.08.2015 - 13:18
fuente

2 respuestas

6

No escriba, genere.

Utilice el generador de configuración SSL de Mozilla

Detalles de Gory

Obtienes 20 líneas de suites de cifrado. En mi versión de OpenSSL tengo muchas más suites de cifrado. A partir de hoy, tengo un total de 139 para elegir:

$ openssl version
OpenSSL 1.0.2d 9 Jul 2015

$ openssl ciphers -V 'ALL' | wc -l
131

$ openssl ciphers -V 'ALL:COMPLEMENTOFALL' | wc -l
139

Sí. ALL no significa "Todo".

Ahora construyamos la opción de lista de cifrado una tras otra y veamos cómo cambian los números:

$ openssl ciphers -V 'ALL' | wc -l
131

$ openssl ciphers -V 'ALL:!ADH' | wc -l
117

$ openssl ciphers -V 'ALL:!ADH:!EXPORT' | wc -l
110

$ openssl ciphers -V 'ALL:!ADH:!EXPORT:!SSLv2' | wc -l
106

$ openssl ciphers -V 'ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA' | wc -l
106

$ openssl ciphers -V 'ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH' | wc -l
106

$ openssl ciphers -V 'ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM' | wc -l
106

$ openssl ciphers -V 'ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW' | wc -l
106

Los números no cambiaron en absoluto en las últimas 5 opciones. Esto me sugiere que esa cadena de cifrado se ha construido para una versión diferente a la mía. Y / o es simplemente incorrecto / sin sentido.

EDIT2015-08-19: incorrecto. Como @ dave-thompson-085 señaló: el recuento de la suite de cifrado no debe cambiar para ninguna palabra clave con el signo + delante. Sólo ordena lo que ya está allí. (Pensé erróneamente que se agregó y luego se ordenó).

Pero, nuevamente, no tengo ni idea de lo que pretendía hacer el autor original de la cadena de cifrado.

Libro de cocina de OpenSSL

Ivan Ristic de SSL Labs publica un capítulo gratuito de su "Bulletproof SSL and TLS" en línea. Esto se llama el OpenSSL Cookbook (archivado aquí ) y hace un buen trabajo explicando la temida cadena de conjuntos de cifrado en la sección Selección de conjunto de cifrado .

TLS_RSA_WITH_RC4_128_SHA

  

Si intento esto, ¿puede soplar algo en mi Apache?

Sí. Bloqueará a cualquiera que haya bloqueado el lado del cliente RC4. (Como Google Chrome. Y Firefox también se está moviendo en esa dirección). No es una buena idea. Pero se arregla fácilmente. Solo vuelve a colocar la cadena antigua y reinicia Apache.

Por cierto: el análisis de la opción de línea de comandos de OpenSSL es terrible.

$ openssl ciphers 'RC4'
ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AECDH-RC4-SHA:ADH-RC4-MD5:ECDH-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:RC4-SHA:RC4-MD5:RC4-MD5:PSK-RC4-SHA:EXP-ADH-RC4-MD5:EXP-RC4-MD5:EXP-RC4-MD5

$ openssl ciphers 'RC4:!OPENSSL:+OPTION:PARSING:!MAKES:+ME:A:!BIT:+SAD:SOMETIMES'
ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AECDH-RC4-SHA:ADH-RC4-MD5:ECDH-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:RC4-SHA:RC4-MD5:RC4-MD5:PSK-RC4-SHA:EXP-ADH-RC4-MD5:EXP-RC4-MD5:EXP-RC4-MD5

Sí, esa es la misma salida en ambas ocasiones. Y no hay mensajes de error.

EDITAR 2015-08-19: Cómo obtener los nombres de Cipher Suite

Has enumerado algunos nombres de conjuntos de cifrado que en realidad no existen.

Aquí está la receta general sobre cómo obtener los nombres de OpenSSL: enumera todo y luego grep para los bits que desea. Al igual que:

  

SSL3-RSA-RSA-NONE-0-MD5

$ openssl ciphers -V ALL:COMPLEMENTOFALL | grep -i 'kx=rsa' | grep -i 'au=rsa' | grep -i 'Enc=None' | grep -i 'mac=md5'
      0x00,0x01 - NULL-MD5                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=MD5

Entonces, el único conjunto de cifrado que cumple estos criterios es NULL-MD5 . (Ese es el nombre de OpenSSL. El nombre oficial de la IANA de este nombre hubiera sido TLS_RSA_WITH_NULL_MD5 .)

Aquí hay otro ejemplo:

  

SSL3-RSA-RSA-NONE-0-SHA

$ openssl ciphers -V ALL:COMPLEMENTOFALL | grep -i 'kx=rsa' | grep -i 'au=rsa' | grep -i 'Enc=None' | grep -i 'mac=sha1'
      0x00,0x02 - NULL-SHA                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=SHA1

Y así sucesivamente.

    
respondido por el StackzOfZtuff 18.08.2015 - 13:46
fuente
1

La respuesta de una de mis preguntas es la siguiente:

Los prefijos disponibles son:

  1. (+): Mueve el cifrado correspondiente a la ubicación actual en la lista.
  2. (-): Elimina el cifrado correspondiente de la lista (se puede agregar más adelante).
  3. (!): elimine el cifrado coincidente de la lista (no se puede agregar más adelante).

La cadena de cifrado predeterminada en Apache v2.2 es ALL:! ADH: RC4 + RSA: + HIGH: + MEDIUM: + LOW: + SSLv2: + EXP y se puede leer como :

  • Comience con todos los cifrados (TODOS :)
    • Recuerde que la especificación de cifrado está separada por dos puntos
  • Eliminar todas las cifras anónimas diffie-hellman (! ADH)
  • Agrega todos los RC4 y RSA
  • Agregue cifrados de alta, media y baja fuerza
  • Agregue SSLv2 y exporte cifrados a la lista, al final.
respondido por el hagrawal 19.08.2015 - 12:51
fuente

Lea otras preguntas en las etiquetas