DigiCert KnowledgeBase - Technical Support-hero

Knowledge Base

How to resolve common ssl-related errors in Apache (日本語)

Solution ID : SO475
Last Modified : 2025/10/31

Apache上でのSSL関連エラー

Apache には、次のような問題を引き起こす可能性のある SSL 関連のエラーがいくつかあります。:


Apache の起動を妨げるエラー

Apache が起動しないエラーは通常、Apache が設定ファイルを読み込む際に、処理方法が見つからないため起こります。この問題が発生した場合は、まずログファイルをチェックし、原因と思われるエラーがないか確認してください。

デフォルトでは以下のフォルダーにログファイルが保管されています。:

Debian (Ubuntu): /var/log/apache2/error_log
Red Hat Enterprise Linux, CentOS: /var/log/httpd/error_log
Windows: C:\Program Files\Apache Group\Apache2\logs\error.log
Default Location From Compiling Source Code: /usr/local/apache2/logs/error_log


ログファイルが上記のフォルダーにない場合は、httpd.conf ファイルまたは .conf ファイルの VirtualHost セクションで別のログファイルの場所を示唆している可能性があります。

以下に、発生する可能性のある conf ファイルエラーをいくつか示します。
 

"Unable to configure RSA server private key" と "certificate routines:X509_check_private_key:key values mismatch" エラー

これらのエラーのいずれかが表示された場合、通常は.confファイルのVirtualHostセクションに読み込まれている秘密鍵が、同じセクションに読み込まれているSSL証明書と一致していないことを意味します。

2つのファイルが一致しているかどうかを確認するには、それぞれに対して次のOpenSSLコマンドを実行します。:

openssl x509 -noout -modulus -in your_domain_com.crt | openssl md5
openssl rsa -noout -modulus -in your_domain_com.key | openssl md5

2つのファイルの係数が正確に一致しない場合は、次のいずれかを実行します。:

  1. .crtファイルと一致する.keyファイルを見つけ、.confファイルのVirtualHostを一致するように更新します。
  2. OpenSSL CSR ウィザードを使用して 2 つの新しいファイルを生成するか、次のコマンドを使用して既存の秘密キー ファイルから新しい CSR を作成して、証明書を再発行します。

    既存の秘密鍵は2048ビット以上である必要があります。2048ビット未満の場合は、鍵を再作成する必要があります。

 

"Invalid command 'SSLEngine'" エラー

このエラーは、サーバーにmod_sslがインストールされていないことが原因である可能性があります。このモジュールは、ApacheがSSL接続を確立するために必要です。

CentOS/RedHat Linuxでこのモジュールを有効にするには、コンソールから次のコマンドを実行します。:

sudo yum install mod_ssl

Debianベースのディストリビューションでこのモジュールを有効にするには、次のコマンドを実行します。:

a2enmod ssl


"SSL3_READ_BYTES:sslv3 alert handshake failure" and "SSL23_WRITE:ssl handshake failure" エラー

これらのエラーは、設定ファイル内の相互認証を要求するディレクティブによって発生します。例えば、SSLハンドシェイク中にサーバーからSSL証明書が送信され、その後クライアントから別のSSL証明書が返された場合、このエラーが発生します。

経験上、このディレクティブは多くの場合、誤って含まれています。このディレクティブを削除してエラーを修正するには、confファイルを開いてください。SSLVerifyClient または SSLVerifyClient optional_no_ca を SSLVerifyClient none に変更し、Apache を再起動してください。この変更により、Apache サーバーはクライアントコンピュータとの SSL ハンドシェイクを完了する際にクライアント証明書の検索を停止します。 

これらのエラーのもう一つの原因として、confファイルにSSLVerifyDepth 1という行が含まれていることが考えられます。行の先頭に#を追加してコメントアウトしてください(例:#SSLVerifyDepth 1)。
 

"SSLSessionCache: Invalid argument: size has to be >=8192 bytes"エラー 

このエラーは、Apache for Windows がインストールされているフォルダーの名前にスペースまたは括弧が含まれている場合に発生します。

これを修正するには、Apache のすべてのファイルを別のフォルダーに移動します (例: c:/Program Files (x86)/Apache2/ から c:/Apache/Apache2/)。

あるいは、フォルダ名を短い名前に変更することもできます。以下のコマンドを実行して、フォルダの短い名前を調べます。:

dir /x C:\

また、次のようにバックスラッシュ (\) を追加して ~ 文字を回避します。
C:/Program Files (x86)/Apache2/ は C:/Progra\~2/Apache2/ に変更されます。

最後に、Apache を再起動します。
 

"Untrusted and Missing Intermediate Certificate" エラー

  1. SSL 証明書テスターでこのエラーが発生する原因は 2 つあります。:

  2. .conf ファイル(通常は httpd-ssl.conf、ssl.conf、または virtual-host.conf)の VirtualHost セクションにある SSLCertificateChainFile がコメントアウトされているか(例: #SSLCertificateChainFile)、または間違った SSL 中間証明書ファイルが指定されています。この問題を修正するには、該当行のコメントを解除し、SSLCertificateChain ファイルが DigiCertCA.crt を指定していることを確認してください。

  3. .conf ファイルの VirtualHost セクションは正しく設定されていますが、SSL 証明書をインストールしようとしている IP アドレスとポートに対して、別の .conf ファイルで既に仮想ホストが設定されています。通常、この問題は、別の .conf ファイルが誤った SSL 中間証明書ファイルを指定していることが原因です。

    このファイルを見つけるには、grepコマンドを実行します(/etc/apache2/をApacheのホームディレクトリに変更します)。これにより、現在のディレクトリ内のすべてのサブフォルダで、SSLCertificateChainFileを含む.confファイルが検索されます。

    grep -i -r "SSLCertificateChainFile" /etc/apache2/


    Windows では次のコマンドを使用します。:

    findstr /s /i "SSLCertificateChainFile" *.conf


  4. ファイルを見つけたら、コメントアウトされている行があればコメントアウトを解除し(#を削除)、SSLCertificateChainファイルがDigiCertCA.crtを指していることを確認します。その後、Apacheを再起動します。
     

"SSL received a record that exceeded the maximum permissible length, ssl_error_rx_record_too_long" エラー

  1. このエラーはFirefoxブラウザで最もよく発生しますが、他のブラウザでも同様のエラーが発生することがあります。このエラーは、保護しようとしているサーバーでSSLトラフィックが正しく設定されていないために発生することがよくあります。例えば、VirtualHostのDNS名が正しく設定されていないなどです。

    このエラーを修正する方法はいくつかあります:

  2. ファイル /conf/extra/httpd-ssl.conf は正しい SSL 情報で構成されていますが、httpd.conf がそれをロードしていないため、ロードされません。

    このエラーを修正するには、次の行のコメントを解除(# を削除)し、Apache を再起動してください。

    #Include conf/extra/httpd-ssl.conf


  3. Apacheは安全なトラフィックをポート443でリッスンするように設定されていません。これを修正するには、<VirtualHost>ブロックが読み込まれる前に次の行を追加してください。:

    Listen 443


    IPv6を使用している場合は、IPアドレスとポート番号を含める必要があります。:

    Listen 192.168.0.1:443


    非標準ポートでhttpsを実行している場合は、そのポートでSSL接続をリッスンするようにApacheに指示する必要があります。:

    Listen 192.168.0.1:8443 https


    <If DefineSSL> ブロック内に上記のような記述がある場合は、Apache の起動時に SSL が定義されていることを確認してください。通常、SSL は単独で定義されますが、定義されていない場合は、Apache 2 以前のバージョンで以下のコマンドを試してみてください。:

    path/to/httpd -D SSL -k start
    path/to/apachectl startssl
    path/to/httpd startssl


  4. WindowsでApacheを実行している場合は、Windowsサーバーのホストファイルが正しく設定されていることを確認してください。C:\Windows\System32\Drivers\etc\hostsにあるはずです。VirtualHost your.domain.com:443をVirtualHost _default_:443などに変更することでこのエラーを修正できる人もいます。

  5. <VirtualHost>ブロックで、SSLEngineディレクティブを使用してApacheがSSLを使用するように次のように設定されていることを確認します。:

    <VirtualHost your.domain.com:443>
    SSLEngine On
    [rest of VirtualHost]
    </VirtualHost>

このエラーは、プロキシの設定が誤っていて、ポート443でSSLハンドシェイクが正しく実行できない場合にも発生する可能性があります。これをテストするには、ネットワークの外部から複数の異なるウェブブラウザを使用してサイトに接続し、エラーが表示されるかどうかを確認してください。エラーが表示されない場合は、プロキシの設定が誤っている可能性があります。