web-dev-qa-db-ja.com

Apacheで接続がHTTPSを拒否しました

現在、サイトの1つでHTTPSを試しているところですが、信頼できるCAから試用版の証明書を取得しました。次のチェックリストを確認しました。

  • CAの指示に従ってすべての証明書ファイルをコピーした
  • Apacheでmod_sslをa2enmod sslで有効化
  • 確認済みPHP OpenSSLが有効になっている
  • 443をリッスンするApacheで新しい仮想ホストを作成しました
  • SSLディレクティブを入力:

    SSLEngine on

    SSLCertificateKeyFile /etc/ssl/ssl.key/server.key

    SSLCertificateFile /etc/ssl/ssl.crt/api_my_site_com.crt

    SSLCertificateChainFile /etc/ssl/ssl.crt/apimysite.com-bundle

  • Apacheのみがlsofでポート443をリッスンしていることを確認

  • ローカルで、および自分のPCからTelnetで443に接続できるかどうかを確認します(ドメインではなくサーバーのIPに接続します。my-site.com:443に接続しようとすると、接続に失敗しました)

しかし、 https://my-site.com (明らかに実際のドメインではない)を参照しようとすると、「接続拒否」エラーが発生します。これはApacheが記録するものです:

[Sat Jul 20 22:50:34 2013] [info] Loading certificate & private key of SSL-aware server
[Sat Jul 20 22:50:34 2013] [info] Configuring server for SSL protocol
[Sat Jul 20 22:50:34 2013] [info] RSA server certificate enables Server Gated Cryptography (SGC)
[Sat Jul 20 22:50:34 2013] [info] [client ::1] Connection to child 0 established (server my-site.com:443)
[Sat Jul 20 22:50:34 2013] [info] Seeding PRNG with 656 bytes of entropy
[Sat Jul 20 22:50:34 2013] [info] [client ::1] SSL library error 1 in handshake (server my-site:443)
[Sat Jul 20 22:50:34 2013] [info] SSL Library Error: 336027900 error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol speaking not SSL to HTTPS port!?
[Sat Jul 20 22:50:34 2013] [info] [client ::1] Connection closed to child 0 with abortive shutdown (server my-site:443)

なぜこれが起こっているのですか?

設定ファイル:

ports.conf

Listen 443
NameVirtualHost *:80
Listen 80

virtualhost設定

<VirtualHost *:443>
DocumentRoot /var/www/mysite/sandbox/api
ServerName api.my-site.com
RewriteEngine on
RewriteRule ^/v1/* /v1/api.php [L]
RewriteRule ^/* /index.php [L]
<Directory "/var/www/mysite/sandbox/api">
allow from all
</Directory>
Options -MultiViews
ErrorDocument 404 /404.html
AddDefaultCharset utf-8
<IfModule mod_mime> 
AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml
</IfModule> 
<IfModule mod_rewrite> 
Options +FollowSymlinks
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_Host} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule> 
<IfModule mod_autoindex> 
Options -Indexes
</IfModule> 
<IfModule mod_rewrite> 
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule> 
<FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
FileETag None
SSLEngine on
SSLCertificateKeyFile /etc/ssl/ssl.key/server.key
SSLCertificateFile /etc/ssl/ssl.crt/api_my_site_com.crt
SSLCertificateChainFile /etc/ssl/ssl.crt/apimysite.com-bundle
ErrorLog /var/www/mysite/api.log
LogLevel info
</VirtualHost>
7
Deniz Zoeteman

インストールしていなかったことに気づいて、ようやくこれを修正しましたmod_ssl

Sudo yum install mod_ssl
4
Jack Nicholson

これをhttpd.confに追加して、Apacheを再起動しました。

Listen 443

そしてそれは今働いています。

1
datasn.io

仮想ホストを作成したら、443経由でポート80のSSLを有効にしたため、新しいホストのSSLはポート80とは異なるはずです。新しい仮想ホストの場合は、636で試してみてください。

1
user3592502

Debianインストールを使用すると、このUbuntu bug と同じ理由でなければならないことしか想定できません。

これは、/ etc/Apache2/sites-available/default-ssl.confのlistenディレクティブを並べ替えることで解決します。 パッチ

私は問題を発見しました-ドメインにCloudflare Freeプランを使用していますが、これはポート443での接続をすべてアクティブにブロックしています。

0
Deniz Zoeteman