来自Apache的SSL连接错误


8

我正在Ubuntu 10.04上的Apache / 2.2.14上运行一个(自签名)SSL证书站点,但是各种浏览器在尝试进行一半连接时给出错误。刚才看到了来自Chrome的短暂错误:

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

单击刷新,问题消失了一段时间。

wget也是:

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

立即再次运行它,它的工作原理是:

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

在启用了我的网站/ default-ssl中:

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

证书:

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

该证书依次通过以下方式生成:

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

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"

我不管理网络,硬件等-所有这些都在Amazon EC2上运行。我没有在服务器前运行负载平衡器或其他任何东西。我正在直接与该主机建立TCP连接(AFAIK)。

有任何想法吗?在此先感谢您的帮助。


您是否尝试过删除实际的证书。然后使用不同的名称生成一个全新的名称,而不使用--force-overwrite选项?
NcA 2011年

您来自哪个国家?该域名/网络服务器有多个IP或服务器?如果您openssl s_client -connect host:port -showcerts连续使用五次会收到类似的wget错误消息,该怎么办?您是否在五次运行中都得到相同的错误?
拉姆(Ram)

Answers:


2

您遇到的问题是,间歇性地,浏览器收到的消息上的签名错误。

发生这种情况的原因有很多种。例如,您可能遇到opensl错误,硬件故障(错误的RAM或CPU),与密钥的某种奇怪的巧合(天文学上不太可能)。或者,您可能正经历着MAC旨在检测的内容:某人可能正在篡改您在途中的流量。

由于您的证书是自签名的,因此请继续进行替换,然后重新启动apache并继续,就像进行故障排除一样。如果这不起作用,请检查您是否正在运行最新版本的openssl(或者只是为了好玩而更改openssl版本)。如果仍然出现MAC错误,请调查是否发生硬件故障或网络篡改。

错误的这一部分特别说明:

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

这表明消息很可能已从已签名的版本进行了修改,并且有可能被截断了。


1

首先,对于最终用户而言,自签名证书通常比廉价的SSL证书更为痛苦。如果您有任何类型的公共接口,甚至有大量内部用户,我都不建议您使用它们。浏览器通过拒绝它们的默认信任越来越严格地对待自签名证书。

其次,机器上有几个不同的信任库。

Linux通常使用NSS(mozilla),但其他浏览器也可能拥有自己的信任库。

证书可能设置了错误的OID,等等。我们需要查看实际的证书。PKI并不真正具有证书的机密性-仅针对私钥。

请使用http://pkif.sourceforge.net/pitt.html并告诉我们您有或没有哪些错误。

谢谢。


-2

我不是程序员,所以请宽容我:)

几天前,我在Chrome中访问我的Gmail帐户时遇到了错误126(net :: ERR_SSL_BAD_RECORD_MAC_ALERT)的问题。也许您的问题与我的相似?所以我找到了帖子http://www.luvfree.com/forums/general_discussion/i_cannot_access_to_my_gmailcom_error_126_neterr_ssl_bad_record_mac_alert_in_chro.htm这是约会网站luvfree.com,但他们建议可以帮助我。

也许您的问题也在路由器中。

解决此问题的方法是升级路由器中的固件。


虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
马克·亨德森

链接也可能是NSFW。
Burhan Khalid

-3

许多事情可能出了问题。我认为没有人会在不了解您的网络配置以及Apache如何配置,负载平衡如何完成,使用何种类型的轮询以及网络其他硬件方面的情况下回答此问题。

在我看来,在SSL主机名验证器上,它得到与主机名不匹配的意外响应?


我不管理网络,硬件等-所有这些都在Amazon EC2上运行。我没有在服务器前运行负载平衡器或其他任何东西。我正在直接与该主机建立TCP连接(AFAIK)。将此信息添加到我的问题。

1
SSL MAC与网络MAC完全无关。
Falcon Momot 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.