Ubuntu10.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]
私のサイトで有効/デフォルト-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)に接続しています。
何か案は?助けてくれてありがとう。
あなたが抱えている問題は、断続的に、ブラウザによって受信されたメッセージの署名が間違っているということです。
これは、非常に多くの理由で発生する可能性があります。たとえば、opensslのバグ、ハードウェア障害(bad RAMまたはCPU))、キーとのある種の異常な一致(天文学的にはありそうもない)、または正確に発生している可能性があります。 MACが検出するように設計されているもの:誰かが途中のトラフィックを改ざんしている可能性があります。
証明書は自己署名されているため、トラブルシューティングの手順と同じように、先に進んで証明書を置き換え、Apacheを再起動して続行します。これが機能しない場合は、最新バージョンのopensslを実行していることを確認してください(または、面白さのためにopensslバージョンを変更してください)。それでもMACエラーが発生する場合は、ハードウェア障害またはネットワーク改ざんが発生していないかどうかを調査してください。
エラーのこの部分は特に伝えています:
OpenSSL: error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed
これは、メッセージが署名されたバージョンから変更されている可能性が高く、場合によっては切り捨てられていることを示しています。
まず第一に、自己署名証明書は、エンドユーザーにとって安価なSSL証明書よりも多くの場合苦痛です。何らかのパブリックインターフェイスがある場合、または多数の内部ユーザーがいる場合でも、これらを使用することはお勧めしません。 Broswersは、デフォルトの信頼を拒否することにより、自己署名証明書をますます厳しくしています。
次に、マシンにはいくつかの異なるトラストストアがあります。
Linuxは一般的にNSS(mozilla)を使用しますが、代替ブラウザーにも独自のトラストストアがある場合があります。
証明書に誤ったOIDが設定されているなどの可能性があります。実際の証明書を確認する必要があります。 PKIには、証明書の機密性は実際にはありません。秘密鍵のみです。
http://pkif.sourceforge.net/pitt.html を使用して、エラーの有無を教えてください。
ありがとう。