web-dev-qa-db-ja.com

Apache SSL構成エラー(SSL接続エラー)

サーバーで Apache をsslで動作するように構成しようとしていますが、サイトにアクセスするたびに、ブラウザーに次のメッセージが表示されます。

SSL接続エラー。サーバーへの安全な接続を確立できません。これはサーバーの問題であるか、所有していないクライアント認証証明書を必要としている可能性があります。エラー107(net :: ERR_SSL_PROTOCOL_ERROR):SSLプロトコルエラー。

上記のエラーメッセージは、Google Chrome固有のもののようです。ただし、メッセージが異なっていても、サイトのSSLはどのブラウザーでも機能しません。

状況の背景:Ubuntu 10.04 desktop editionを使用しています。

zend serverをインストールしてApacheをインストールしました(Apacheを自動的にインストールしました)。次に、opensslをインストールしました。非httpsページはサイトで正常に機能します。
複数の証明書サイトからトライアル証明書を取得しようとしましたが、何も機能していません(同じエラー)。
以前、SSLが正常に機能する別のサーバーでサイトをホストしていました。また、そのサーバーのキーと証明書ファイルを使用しようとしましたが、同じエラーが発生しました。

ただし、ドメイン名とIPは同じままです。私のSSLCertificateFileSSLCertificateKeyFileは正しいディレクトリとファイルを指している。

SSLVerifyClientも有効にしていません。

誰か提案があれば、それは最も高く評価されるでしょう。

37
user396404

@ User39604と同じ問題があり、さまざまなアドバイスに従わなければなりませんでした。彼がたどった正確なパスを覚えていないので、私のパスをリストします。

  1. <?php echo phpinfo();?>を使用してSSLがあるかどうかを確認します

  2. 必要であれば

    A。Apache Sudo a2enmod sslでsslを有効にします

    B。openssl Sudo apt-get install opensslをインストール

    C。ポート443が開いているかどうかを確認するSudo netstat -lp

    D。必要に応じて、/etc/Apache2/ports.confを変更します。これは動作します

    NameVirtualHost *:80
    Listen 80
    
    <IfModule mod_ssl.c>
        # If you add NameVirtualHost *:443 here, you will also have to change
        # the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
        # to <VirtualHost *:443>
        # Server Name Indication for SSL named virtual hosts is currently not
        # supported by MSIE on Windows XP.
        NameVirtualHost *:443
        Listen 443
    </IfModule>
    
    <IfModule mod_gnutls.c>
        Listen 443
    </IfModule>
    
  3. キーと証明書を取得する

    A。ペアに対して認証機関(Comodo、GoDaddy、Verisign)に支払う

    B。独自の生成*-以下を参照(テスト目的のみ)

  4. 設定を変更して(ubuntu12 /etc/Apache2/httpd.conf-デフォルトは空のファイル)、適切な<VirtualHost>MYSITE.COMとキーと証明書のパス/名前を置き換えて、証明書とキーを指定します) ):

    <VirtualHost _default_:443> 
    ServerName MYSITE.COM:443
    SSLEngine on
    SSLCertificateKeyFile /etc/Apache2/ssl/MYSITE.COM.key
    SSLCertificateFile /etc/Apache2/ssl/MYSITE.COM.cert
    ServerAdmin MYWEBGUY@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    
    
    ErrorLog ${Apache_LOG_DIR}/errorSSL.log
    
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    
    CustomLog ${Apache_LOG_DIR}/accessSSL.log combined
    
    </VirtualHost>
    

他の多くの仮想ホスト設定は/etc/Apache2/sites-enabled/および/etc/Apache2/sites-available/で利用できますが、すべての問題を解決するために重要なのは/etc/Apache2/httpd.confでした。

詳細情報:

http://wiki.vpslink.com/Enable_SSL_on_Apache2

http://httpd.Apache.org/docs/2.0/ssl/ssl_faq.html#selfcert

*独自の証明書(自己署名)を生成すると、ユーザーのブラウザーが認識できない権限を持つ証明書が作成されます。したがって、ブラウザは血まみれの殺人を叫び、ブラウザが実際にページを開く前に、ユーザーは何十回も「リスクを理解する」必要があります。そのため、テスト目的でのみ機能します。とは言っても、これがHOW-TOです。

  1. apacheフォルダーに移動します(ubuntu12 /etc/Apache2/
  2. sslのようなフォルダーを作成します(またはあなたのために働くものなら何でも、名前はシステム要件ではありません)
  3. 選択したディレクトリに移動/etc/Apache2/ssl
  4. Sudo openssl req -new -x509 -nodes -out MYSITE.COM.crt -keyout MYSITE.COM.keyを実行します
  5. MYSITE.COM.crtタグでMYSITE.COM.keyおよび<VirtualHost>を使用します

名前の形式は厳密なシステム要件の下ではなく、ファイルと同じである必要があります:)-212-MYSITE.COM.crtjune2014-Godaddy-MYSITE.COM.crtなどの名前が機能するはずです。

39
tony gil

chromeで同じエラーが発生していました(Firefox、IEでは別のエラーです)。error.logでも[error] [client cli.ent.ip.add] Invalid method in request \x16\x03指示フォームに従って このサイト 設定をFROMから変更しました:

<VirtualHost subdomain.domain.com:443>

   ServerAdmin [email protected]
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

に:

<VirtualHost _default_:443>

   ServerAdmin [email protected]
   ServerName subdomain.domain.com

   SSLEngine On
   SSLCertificateFile conf/ssl/ssl.crt
   SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

今では正常に動作しています:)

22
Alex Okrushko

この状況に対して提案したい一般的な原因:

顧客がSkypeを実行している場合があります。Skypeは、気づかないうちにポート443を使用しています。彼らがTomcatまたはApacheを起動すると、起動しているように見えますが、ポート443でバインドできません。これは、ユーザーがブラウザで受信するメッセージそのものです。修正は、ポート443で実行されていたものを停止し、ポート443でバインドできるようにWebサーバーを再起動することです。

お客様はWebサーバーを起動した後、Skypeを再起動できます。Skypeはポート443が使用中であることを検出し、使用する別のポートを選択します。

6
Michael Berman
#Make sure that you specify the port for both http and https ie.
NameVirtualHost:80
NameVirtualHost:443
#and 
<VirtualHost *:80>
<VirtualHost *:443>

#mixing * and *:443 does not work it has to be *:80 and *:443
6
Jeremy

SSLを正しく有効にする手順。

Sudo a2enmod ssl  
Sudo apt-get install openssl

/ etc/Apache2/sites-availableにあるSSL構成ファイル(default-ssl.conf)でSSL証明書のパスを構成します。/etc/Apache2/ssl /に証明書を保存しました

SSLEngine On
SSLCertificateFile /etc/Apache2/ssl/certificate.crt
SSLCertificateChainFile /etc/Apache2/ssl/ca_bundle.crt
SSLCertificateKeyFile /etc/Apache2/ssl/private.key

SSL構成ファイルを有効にする

Sudo a2ensite default-ssl.conf
2
Syed Shibli

この問題が発生しましたが、解決策は少しばかげていました。

私は自分のウェブサイトのプロキシとして機能するCloudflareを使用しています。 SSH経由でログインできるようにするために、/etc/hostsファイルなので、サーバーのIPアドレスを覚えておく必要はありませんでした。

xxx.xx.xx.xxx  example.com

そのため、ブラウザで https://www.example.com にアクセスしたとき、Cloudflareプロキシを使用し、 https://にアクセスしたとき、 example.com 私はサーバーに直接行きました。 Cloudflareのセットアップでは中間証明書を追加する必要がないため、 https://example.com にアクセスしたときにブラウザーでこのセキュリティ例外が表示されていましたが、 https://www.example.com は機能していました。

解決策:ラップトップの/etc/hostsファイル。

これがあなたの問題でない場合、多くのオンラインSSLチェッカーツールの1つ を使用して 問題の診断を試みることをお勧めします。

また、pingを使用して、報告されているIPアドレスを確認し、予想されるIPアドレスと照合することをお勧めします。

ping https://www.example.com/

もう1つの非常に役立つSSLリソースは、 Mozilla SSL Configuration Generator です。 SSL構成を生成できます。

2
Dagmar

これが、Ubuntuでそれを修正した理由です。

  1. モジュールを有効にしました:a2enmod ssl
  2. すべての証明書関連ファイルをフォルダー/usr/local/sslに移動し、誰でも読み取り可能にしました:chmod -R +r /usr/local/ssl
  3. 仮想ホストの<VirtualHost *:80><VirtualHost *:*>に変更しました。
  4. 仮想ホストの他のすべてのSSLディレクティブの前にSSLEngine Onを追加しました。

証明書にパスフレーズを設定した場合、Apacheは再起動時にパスフレーズを要求する必要があります。

1
Znarkus

Apacheの構成を変更し始めたとき、自分が何をしていたのかわかりませんでした。あなたが遭遇したのと同じ問題、特にChromeこのエラーが発生するまで、.

私がやったことは、SSL検証の設定に使用されるすべてのサイト固有のディレクティブをコメントアウトし、Chromeを許可して、ディレクティブを再有効化する前にディレクティブの前のドキュメントを確認し、Apacheを再起動したことを確認しました。これらを慎重に検討することにより、問題の原因となっているものを特定できるはずです。

私の場合、私はこれから行きました:

SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars +StrictRequire
SSLRequireSSL On

これに

<Location /sessions>
  SSLRequireSSL
  SSLVerifyClient require
</Location>

ご覧のように、かなりの数の変更がありました。

1
Fitter Man

この問題が発生するのは、<VirtualHost>は、httpd.confhttpd-ssl.confの両方で定義されています。

httpd.confでは、次のように定義されています

<VirtualHost localhost>

httpd-ssl.confでは、次のように定義されています

<VirtualHost _default_:443>

次の変更によりこの問題が解決され、httpd.confに:80が追加されました。

<VirtualHost localhost:80>
1
Daniel

他の回答と同様に、このエラーは、SSLを使用するように構成されたサイトがない場合に発生する可能性があります。

Debian WheezyからDebian Jessieにアップグレードしたときにエラーが発生しました。 Apacheの新しいバージョンでは、.confで終わるサイト構成ファイルが必要です。私の構成ファイルはそうしなかったため、無視されていて、SSL接続を提供するように構成された他のものはありませんでした。

1
Andy Beverley

/etc/Apache2/sites-available/default-sslのシンボリックリンクを/etc/Apache2/sites-enabledに配置することにより、デフォルトのApache2 ssl構成をセットアップする手順を最初に実行したときにこのエラーが発生しました。その後、別の構成ファイルのポート443で別のNameVirtualHostを追加しようとすると、このエラーが発生し始めました。

/etc/Apache2/sites-enabled/default-sslシンボリックリンクを削除し、別の構成ファイル(httpd.conf、おそらく適切な形式ではないが機能している)にこれらの行を追加することで修正しました。

NameVirtualHost *:443

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateChainFile    /etc/Apache2/ssl/chain_file.crt
  SSLCertificateFile    /etc/Apache2/ssl/site_certificate.crt
  SSLCertificateKeyFile /etc/Apache2/ssl/site_key.key
  ServerName www.mywebsite.com
  ServerAlias www.mywebsite.com
  DocumentRoot /var/www/mywebsite_root/


</VirtualHost>
0
joseph_morris

構成の誤りも原因でこの問題が発生しました。 Tomcatを使用していて、server.xmlでコネクタを次のように指定していました。

<Connector port="17443" SSLEnabled="true"
           protocol="org.Apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keyAlias="wrong" keystorePass="secret"
           keystoreFile="/ssl/right.jks" />

このように修正したとき:

<Connector port="17443" SSLEnabled="true"
           protocol="org.Apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keyAlias="right" keystorePass="secret"
           keystoreFile="/ssl/right.jks" />

期待どおりに機能しました。つまり、正しいキーストアがあるだけでなく、その下に正しいエイリアスが指定されていることを確認します。貴重なヒント ser396404 をありがとう。

0
Lucas

コメントアウトすることで解決しました:

AcceptFilter httpsなし

httpd.confで

http://www.apachelounge.com/viewtopic.php?t=4461

0
Jan Bolmeson