Errores de conexión SSL de Apache

8

Estoy ejecutando un sitio de certificado SSL (autofirmado) en Apache / 2.2.14 en Ubuntu 10.04, pero varios navegadores están dando errores en la mitad de los intentos de conexión. Justo ahora vi este error transitorio de Chrome:

"Error 126 (net::ERR_SSL_BAD_RECORD_MAC_ALERT): Unknown error."

Presiona actualizar y el problema desaparece por un tiempo.

wget también:

$ wget --no-check-certificate https://dev.foo.com/deps/
--2010-09-08 19:30:26--  https://dev.foo.com/deps/
Resolving dev.foo.com... 184.72.53.220
Connecting to dev.foo.com|184.72.53.220|:443... connected.
OpenSSL: error:0407006A:rsa
routines:RSA_padding_check_PKCS1_type_1:block type is not 01
OpenSSL: error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed
OpenSSL: error:1408D07B:SSL routines:SSL3_GET_KEY_EXCHANGE:bad signature
Unable to establish SSL connection.

Ejecútelo de inmediato y funciona:

$ wget --no-check-certificate https://dev.foo.com/deps/
--2010-09-08 19:30:29--  https://dev.foo.com/deps/
    Resolving dev.foo.com... 184.72.53.220
Connecting to dev.foo.com|184.72.53.220|:443... connected.
WARNING: cannot verify dev.foo.com's certificate, issued by
`/CN=dev.foo.com':
 Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 3157 (3.1K) [text/html]
Saving to: `index.html'

100%[======================================>] 3,157       --.-K/s   in 0s

2010-09-08 19:30:29 (48.6 MB/s) - `index.html' saved [3157/3157]

En mis sitios habilitados / default-ssl:

SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

El cert:

-----BEGIN CERTIFICATE-----
MIIBszCCARwCCQCa0TzNwqLgsTANBgkqhkiG9w0BAQUFADAeMRwwGgYDVQQDExNk
ZXYucGFydHlvbmRhdGEuY29tMB4XDTEwMDgyNzA2MzA1N1oXDTIwMDgyNDA2MzA1
N1owHjEcMBoGA1UEAxMTZGV2LnBhcnR5b25kYXRhLmNvbTCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEAzXDEULpCUqIc9hV/ESFapkckR2uoYINA81DvG2aQZ9Ot
Q30OwX2ae2CC4bSzJEIVlahU8vjVrWpmpa28NEhQbqh4ywwbl1XDrEVYI6Gkfimf
snJhOKyaVrEhlwutYtBjmsz3ZIqwymMPm/6smVcSS5dJIynlSmtltxX6ivPcO8UC
AwEAATANBgkqhkiG9w0BAQUFAAOBgQBGxHVkpSSOnZjzuySRepjhAlV/yhe9Fx23
fh12WrjQMEi98B7JEuNSLXDWckUN7O6XRc3RzKmazcGHJqzhn0Ov6gAmAE2XjZ/x
VW21xmaLwk+KgYKFJbJJaP3jMSpU7I3aa11wqAkR2Zd4Nkm9N0YXYIzcBdfztTVI
Et8mEHBFdg==
-----END CERTIFICATE-----

El certificado se genera a través de:

$ make-ssl-cert generate-default-snakeoil --force-overwrite

Versión de Apache.

$ apache2 -V
Server version: Apache/2.2.14 (Ubuntu)
Server built:   Apr 13 2010 20:22:19
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Worker
 threaded:     yes (fixed thread count)
   forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT=""
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

No administro la red, el hardware, etc., todo esto se ejecuta en Amazon EC2. No estoy ejecutando un equilibrador de carga o cualquier otra cosa delante del servidor. Estoy haciendo conexiones TCP directas a ese host (AFAIK).

¿Algunas ideas? Gracias de antemano por cualquier ayuda.

Yang
fuente
¿Has intentado eliminar el certificado real? Luego, ¿generar uno completamente nuevo, con un nombre diferente, NO utilizar la opción --force-overwrite?
NcA
¿De qué país te estás olvidando? ¿Hay más de una IP o servidor para ese nombre de dominio / servidor web? ¿Qué sucede si usa openssl s_client -connect host:port -showcertscinco veces seguidas y recibe mensajes de error similares a wget? ¿Obtiene los mismos errores en cada una de las cinco ejecuciones?
Ram

Respuestas:

2

El problema que tiene es que, de manera intermitente, la firma en el mensaje recibido por el navegador es incorrecta.

Esto puede suceder por una gran cantidad de razones. Por ejemplo, puede estar experimentando un error de openssl, una falla de hardware (RAM defectuosa o CPU), algún tipo de coincidencia anormal con su clave (astronómicamente improbable). O bien, puede estar experimentando exactamente lo que el MAC está diseñado para detectar: ​​alguien puede estar alterando su tráfico en ruta.

Como su certificado está autofirmado, continúe y reemplácelo, reinicie apache y continúe, solo como un paso de solución de problemas. Si esto no funciona, verifique que esté ejecutando la última versión de openssl (o simplemente cambie la versión de openssl por diversión). Si aún recibe errores de MAC, investigue si tiene una falla de hardware o una alteración de la red.

Esta parte del error es particularmente reveladora:

OpenSSL: error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed

Esto indica que lo más probable es que el mensaje haya sido modificado desde la versión firmada y posiblemente truncado.

Falcon Momot
fuente
1

En primer lugar, los certificados autofirmados suelen ser más difíciles que un certificado SSL barato para usuarios finales. No recomiendo usarlos si tiene algún tipo de interfaz pública, o incluso una gran cantidad de usuarios internos. Broswers se vuelve cada vez más estricto con los certificados autofirmados al negarles la confianza predeterminada.

En segundo lugar, hay varias tiendas de confianza diferentes en una máquina.

Linux usa NSS en general (mozilla), pero los navegadores alternativos también pueden tener sus propios almacenes de confianza.

Es posible que un certificado tenga configurados los OID incorrectos, etc. Necesitamos ver el certificado real. Las PKI realmente no tienen confidencialidad para los certificados, solo para las claves privadas.

Utilice http://pkif.sourceforge.net/pitt.html y díganos qué errores tiene o no tiene.

Gracias.

Brennan
fuente
-2

No soy programador, así que por favor sé indulgente conmigo :)

Hace un par de días, tengo problemas con el acceso a mi cuenta de gmail con el Error 126 (net :: ERR_SSL_BAD_RECORD_MAC_ALERT) en Chrome. ¡Quizás tu problema sea similar al mío! Así que he encontrado la publicación http://www.luvfree.com/forums/general_discussion/i_cannot_access_to_my_gmailcom_error_126_neterr_ssl_bad_record_mac_alert_in_chro.htm Este es el sitio de citas luvfree.com pero me aconsejan.

Tal vez su problema también en el enrutador.

La solución a este problema fue actualizar el firmware en el enrutador.

Bronislav Turnelius
fuente
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Mark Henderson
También el enlace podría ser NSFW.
Burhan Khalid
-3

Muchas cosas podrían estar yendo mal. No creo que nadie pueda responder esto sin conocer la configuración de su red y cómo se configura Apache, cómo se realiza el equilibrio de carga y qué tipo de round robin está utilizando, así como otros aspectos de hardware de su red.

Para mí, parece que, en el validador de nombres de host SSL, ¿está obteniendo una respuesta inesperada que no coincide con el nombre de host?

djangofan
fuente
No administro la red, el hardware, etc., todo esto se ejecuta en Amazon EC2. No estoy ejecutando un equilibrador de carga o cualquier otra cosa delante del servidor. Estoy haciendo conexiones TCP directas a ese host (AFAIK). Agregar esta información a mi pregunta.
Yang
1
Un MAC SSL no tiene absolutamente nada que ver con un MAC de red.
Falcon Momot