Erreurs de connexion SSL d'Apache

8

J'utilise un site de certificat SSL (auto-signé) sur Apache / 2.2.14 sur Ubuntu 10.04, mais divers navigateurs donnent des erreurs sur la moitié des tentatives de connexion. Je viens de voir cette erreur transitoire de Chrome:

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

Cliquez sur Actualiser et le problème disparaît pendant un certain temps.

wget aussi:

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

Exécutez-le à nouveau immédiatement et cela fonctionne:

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

Dans mes sites-enabled / default-ssl:

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

Le cert:

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

Le certificat est à son tour généré via:

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

Version 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"

Je n'administre pas le réseau, le matériel, etc. - tout fonctionne sur Amazon EC2. Je n'exécute pas d'équilibreur de charge ou quoi que ce soit d'autre devant le serveur. Je fais des connexions TCP directes à cet hôte (AFAIK).

Des idées? Merci d'avance pour votre aide.

Yang
la source
Avez-vous essayé de supprimer le certificat réel? Ensuite, en générer un entièrement nouveau, avec un nom différent, sans utiliser l'option --force-overwrite?
NcA
De quel pays parlez-vous? il y a plus d'une adresse IP ou d'un serveur pour ce nom de domaine / serveur Web? Que se passe-t-il si vous utilisez openssl s_client -connect host:port -showcertscinq fois de suite obtenez-vous des messages d'erreur similaires à wget? Obtenez-vous les mêmes erreurs pour chacune des cinq séries?
Ram

Réponses:

2

Le problème que vous rencontrez est que, par intermittence, la signature du message reçu par le navigateur est incorrecte.

Cela peut se produire pour un très grand nombre de raisons. Par exemple, vous pouvez rencontrer un bogue openssl, une défaillance matérielle (mauvaise RAM ou CPU), une sorte de coïncidence bizarre avec votre clé (astronomiquement peu probable). Ou, vous rencontrez peut-être exactement ce que le MAC est conçu pour détecter: quelqu'un peut altérer votre trafic en cours de route.

Étant donné que votre certificat est auto-signé, allez-y et remplacez-le, redémarrez apache et continuez, tout comme une étape de dépannage. Si cela ne fonctionne pas, vérifiez que vous utilisez la dernière version de openssl (ou changez simplement la version openssl pour le plaisir). Si vous obtenez toujours des erreurs MAC, vérifiez si vous avez une panne matérielle ou une altération du réseau en cours.

Cette partie de l'erreur est particulièrement révélatrice:

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

Cela indique que le message a probablement été modifié à partir de la version signée et peut-être tronqué.

Falcon Momot
la source
1

Tout d'abord, les certificats auto-signés sont souvent plus pénibles qu'un certificat SSL bon marché pour les utilisateurs finaux. Je ne recommande pas de les utiliser si vous avez n'importe quel type d'interface publique, ou même un grand nombre d'utilisateurs internes. Les Broswers deviennent de plus en plus stricts sur les certificats auto-signés en leur refusant la confiance par défaut.

Deuxièmement, il existe plusieurs magasins de confiance différents sur une machine.

Linux utilise généralement NSS (mozilla), mais les navigateurs alternatifs peuvent également avoir leurs propres magasins de confiance.

Il est possible qu'un certificat ait des OID incorrects, etc. Nous devons voir le certificat réel. Les PKI n'ont pas vraiment de confidentialité pour les certificats - uniquement pour les clés privées.

Veuillez utiliser http://pkif.sourceforge.net/pitt.html et nous dire quelles erreurs vous avez ou n'avez pas.

Merci.

Brennan
la source
-2

Je ne suis pas programmeur alors soyez indulgent avec moi :)

Il y a quelques jours, j'ai un problème d'accès à mon compte Gmail avec l'erreur 126 (net :: ERR_SSL_BAD_RECORD_MAC_ALERT) dans Chrome. Peut-être que votre problème est similaire au mien?! J'ai donc trouver un article http://www.luvfree.com/forums/general_discussion/i_cannot_access_to_my_gmailcom_error_126_neterr_ssl_bad_record_mac_alert_in_chro.htm Ce site de rencontres est luvfree.com mais ils me conseillent.

Peut-être votre problème aussi dans le routeur.

La solution à ce problème consistait à mettre à niveau le micrologiciel du routeur.

Bronislav Turnelius
la source
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Mark Henderson
Le lien peut également être NSFW.
Burhan Khalid
-3

Beaucoup de choses pourraient mal tourner. Je ne pense pas que quiconque puisse répondre à cette question sans connaître votre configuration réseau et comment Apache est configuré, comment l'équilibrage de charge est effectué et quel type de tourniquet son utilisation, ainsi que d'autres aspects matériels de votre réseau.

Pour moi, il semble que, sur le validateur de nom d'hôte SSL, il obtienne une réponse inattendue qui ne correspond pas au nom d'hôte?

djangofan
la source
Je n'administre pas le réseau, le matériel, etc. - tout fonctionne sur Amazon EC2. Je n'exécute pas d'équilibreur de charge ou quoi que ce soit d'autre devant le serveur. Je fais des connexions TCP directes à cet hôte (AFAIK). Ajout de cette information à ma question.
Yang
1
Un MAC SSL n'a absolument rien à voir avec un MAC réseau.
Falcon Momot