Erros de conexão SSL do Apache


8

Estou executando um site de certificação SSL (autoassinado) no Apache / 2.2.14 no Ubuntu 10.04, mas vários navegadores estão apresentando erros em metade das tentativas de conexão. Só agora vi esse erro transitório do Chrome:

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

Clique em Atualizar e o problema desaparecerá por um tempo.

wget também:

$ 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.

Execute-o imediatamente novamente e ele 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]

Nos meus sites habilitados / ssl padrão:

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

O certificado:

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

Por sua vez, o certificado é gerado por:

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

Versão 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"

Não administro a rede, o hardware etc. - tudo isso está sendo executado no Amazon EC2. Não estou executando um balanceador de carga ou qualquer outra coisa na frente do servidor. Estou fazendo conexões TCP diretas com esse host (AFAIK).

Alguma ideia? Agradecemos antecipadamente por qualquer ajuda.


Você já tentou remover o certificado real. Então, gerando um novo, com um nome diferente, NÃO usando a opção --force-overwrite?
NCA

De que país você está indo? existe mais de um IP ou servidor para esse nome de domínio / servidor da web? O que acontece se você usar openssl s_client -connect host:port -showcertscinco vezes seguidas, recebe mensagens de erro semelhantes ao wget? Você recebe os mesmos erros em cada uma das cinco execuções?
Ram

Respostas:


2

O problema que você está enfrentando é que, intermitentemente, a assinatura na mensagem recebida pelo navegador está incorreta.

Isso pode acontecer por um número muito grande de razões. Por exemplo, você pode estar enfrentando um bug no openssl, uma falha de hardware (RAM ou CPU ruins), algum tipo de coincidência esquisita com a sua chave (astronomicamente improvável). Ou você pode estar enfrentando exatamente o que o MAC foi projetado para detectar: ​​alguém pode estar interferindo na rota de tráfego.

Como seu certificado é autoassinado, vá em frente e substitua-o, reinicie o apache e continue, apenas como uma etapa de solução de problemas. Se isso não funcionar, verifique se você está executando a versão mais recente do openssl (ou apenas altere a versão do openssl para se divertir). Se você ainda receber erros de MAC, investigue se há uma falha de hardware ou violação de rede.

Esta parte do erro é particularmente reveladora:

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

Isso indica que provavelmente a mensagem foi modificada a partir da versão que foi assinada e possivelmente truncada.


1

Antes de tudo, os certificados autoassinados costumam ser mais problemáticos do que um certificado SSL barato para usuários finais. Eu não recomendo usá-los se você tiver algum tipo de interface pública, ou mesmo um grande número de usuários internos. Os Broswers estão cada vez mais exigindo certificados autoassinados, negando a eles a confiança padrão.

Segundo, existem vários armazenamentos confiáveis ​​diferentes em uma máquina.

O Linux usa o NSS geralmente (mozilla), mas navegadores alternativos também podem ter seus próprios armazenamentos confiáveis.

É possível que um certificado tenha os OIDs incorretos definidos, etc. Precisamos ver o certificado real. As PKIs realmente não têm confidencialidade para certificados - apenas para chaves privadas.

Por favor, use http://pkif.sourceforge.net/pitt.html e diga-nos quais erros você possui ou não.

Obrigado.


-2

Eu não sou programador, por favor, seja indulgente comigo :)

Há alguns dias, tenho problemas com o acesso à minha conta do Gmail com o Erro 126 (net :: ERR_SSL_BAD_RECORD_MAC_ALERT) no Chrome. Talvez o seu problema seja semelhante ao meu ?! Então, eu encontrei a publicação 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 site está namorando luvfree.com, mas eles me ajudam.

Talvez o seu problema também no roteador.

A correção para esse problema foi atualizar o firmware no roteador.


Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Mark Henderson

Além disso, o link pode ser NSFW.
Burhan Khalid

-3

Muitas coisas podem estar dando errado. Acho que ninguém pode responder a isso sem conhecer sua configuração de rede e como o Apache está configurado, como o balanceamento de carga está sendo feito e que tipo de round-robin está sendo usado, além de outros aspectos de hardware da sua rede.

Para mim, parece que, no validador de nome de host SSL, está recebendo uma resposta inesperada que não corresponde ao nome do host?


Não administro a rede, o hardware etc. - tudo isso está sendo executado no Amazon EC2. Não estou executando um balanceador de carga ou qualquer outra coisa na frente do servidor. Estou fazendo conexões TCP diretas com esse host (AFAIK). Adicionando esta informação à minha pergunta.
Yang

1
Um MAC SSL não tem absolutamente nada a ver com um MAC de rede.
Falcon Momot
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.