今日のデジタル世界では、SSL (Secure Sockets Layer) 証明書は、クライアントとサーバー間の安全な通信を確保する上で重要な役割を果たしています。ただし、SSL 証明書を設定するときに、開発者、管理者、およびユーザーがよく遭遇する一般的な問題の 1 つは、「SSL 証明書の問題: ローカル発行者の証明書を取得できません」というエラーです。このエラーは、SSL 証明書の検証プロセスに問題があり、安全な通信を妨げていることを示しています。
この記事では、このエラーの意味、一般的な原因、およびそれを解決するための段階的な解決策について説明します。さらに、SSL 証明書がどのように機能するか、および適切な証明書検証が Web セキュリティにとって重要である理由についても説明します。
SSL 証明書とは何ですか?
エラーの説明に入る前に、SSL 証明書の役割を簡単に理解しましょう。
SSL 証明書は、Web サイトの ID を認証し、サーバーとクライアント (Web ブラウザなど) の間で送信されるデータを暗号化するデジタル証明書です。この暗号化により、ログイン認証情報、支払い詳細、個人データなどの機密情報は、送信中に安全かつプライバシーが保たれます。
SSL 証明書は、Web サイトまたは組織の信頼性を検証する信頼できる機関である認証局 (CA) によって発行されます。 Web ブラウザまたはクライアントがサーバーに接続するとき、SSL 証明書を検証して、サーバーの ID が正当であることを確認します。
「SSL 証明書の問題: ローカル発行者の証明書を取得できません」とは何を意味しますか?
「SSL 証明書の問題: ローカル発行者の証明書を取得できません」というエラーは、クライアント (ブラウザ、アプリケーション、またはコマンドライン ツール) が SSL 証明書の信頼チェーンの検証に失敗した場合に発生します。
SSL 証明書はチェーン形式で発行されます:
- エンドユーザー証明書: Web サイトまたはサービスの証明書。
- 中間証明書: CA によって発行され、エンドユーザー証明書をルートにリンクする証明書。
- ルート証明書: 広く認知されている認証局によって発行された信頼できる証明書。
SSL が正しく機能するには、クライアントは、エンドユーザー証明書から中間証明書、そして最終的には信頼されたルート証明書に至るまで、証明書チェーン全体を検証する必要があります。中間証明書の 1 つが見つからない場合、またはローカル システムがルート証明書を見つけられない場合、エラーが発生します。
「ローカル発行者の証明書を取得できません」エラーの一般的な原因
この SSL エラーはさまざまな理由で発生する可能性があります。最も一般的な原因のいくつかを次に示します:
- 中間証明書がありません: このエラーの最も一般的な原因は、サーバー上に中間証明書がないことです。サーバーが証明書チェーン全体を提供しない場合、クライアントは SSL 証明書を検証できません。
- ルート証明書が期限切れまたは欠落している: クライアント マシンに正しいルート証明書がない場合、たとえチェーンがサーバーによって正しく提供されていたとしても、クライアント マシンは SSL 証明書を信頼できません。これは、クライアントの証明書ストアが古いか、必要なルート証明書が欠落している場合に発生する可能性があります。
- 自己署名証明書: 自己署名証明書は、信頼できる認証局によって署名されていない証明書です。サーバーが自己署名証明書を使用している場合、その証明書がクライアントの信頼ストアに明示的に追加されない限り、その証明書は信頼されません。
- 間違った SSL 構成: サーバー上の SSL の構成が間違っていると、この問題が発生する可能性があります。たとえば、サーバーが証明書の完全なチェーンを提供しない場合、クライアントは SSL 証明書を検証できず、「ローカル発行者の証明書を取得できません」エラーが発生します。
- ローカル証明書ストアの問題: 場合によっては、クライアントのローカル証明書ストアの有効期限が切れているか、構成が間違っているか、重要なルート証明書や中間証明書が欠落しているため、SSL エラーが発生する可能性があります。
- 証明書チェーンの破損: 認証局がチェーン内の証明書の 1 つを取り消すか期限切れにした場合、クライアントは SSL 証明書を検証できなくなり、このエラーが発生します。
「SSL 証明書の問題: ローカル発行者の証明書を取得できない」の解決方法
このエラーを解決するには、サーバー側の問題、クライアント側の問題、または証明書の構成ミスによるものなど、根本原因に対処する必要があります。一般的な原因に基づいたいくつかの解決策を次に示します。
- サーバーに中間証明書をインストールする
このエラーを解決する最も効果的な方法の 1 つは、サーバーが中間証明書を含む完全な証明書チェーンを提供していることを確認することです。
解決:
• SSL 証明書プロバイダーまたは認証局から中間証明書を取得します。
• 中間証明書をサーバーの構成に追加します。 Nginx や Apache などのツールを使用している場合、これには通常、中間証明書と SSL 証明書を単一のファイルに連結することが含まれます。
たとえば、Nginx では、次のように SSL チェーンを構成できます。
ssl_certificate /path/to/your_cert_chain.pem;
ssl_certificate_key /path/to/your_private_key.pem;
ログイン後にコピー
your_cert_chain.pem に SSL 証明書と中間証明書の両方が含まれていることを確認してください。
- クライアントの証明書ストアを更新する
問題がクライアントのローカル証明書ストアにある場合は、最新のルート証明書で更新すると問題が解決することがよくあります。
解決:
• Linux の場合は、次のコマンドを使用して証明書ストアを更新します。
バッシュ
コードをコピーする
sudo update-ca-certificates
• macOS の場合、キーチェーン アクセス アプリを使用して証明書ストアを更新できます。
• Windows の場合、証明書ストアを手動で更新するか、Windows Update を使用して不足しているルート証明書をインストールする必要がある場合があります。
- サーバーのSSL構成を確認する
SSL 構成がサーバー上で正しく設定されていることを確認することが重要です。 SSL テスト ツールを使用すると、サーバーが正しい証明書チェーンを提供しているかどうかを診断できます。
解決:
SSL Labs の SSL Test などのツールを使用して、Web サイトの SSL 構成をスキャンします。このツールは、証明書チェーンに関する詳細なフィードバックを提供し、不足している証明書や間違った証明書を強調表示します。
- 自己署名証明書をトラストストアに追加する
サーバーが自己署名証明書を使用している場合は、この証明書をクライアント マシンの信頼できる証明書に追加する必要があります。
解決:
自己署名証明書をクライアントのシステム上のローカル信頼ストアに手動で追加します。例えば:
• Linux では、証明書を /usr/local/share/ca-certificates/ に追加し、update-ca-certificates を実行します。
• macOS では、証明書をキーチェーン アクセスにインポートします。
• Windows では、証明書を信頼されたルート証明機関ストアにインポートします。
- 期限切れの証明書を確認する
チェーン内の証明書の期限切れまたは失効によってエラーが発生した場合は、期限切れの証明書を有効な証明書に置き換えることで問題が解決します。
解決:
SSL チェッカー ツールを使用して、チェーン内の証明書の有効性を検証します。証明書の有効期限が切れているか失効している場合は、認証局に新しい証明書を要求してください。
将来の SSL 証明書の問題の防止
今後、「SSL 証明書の問題: ローカル発行者の証明書を取得できません」エラーやその他の SSL 関連の問題が発生しないようにするには、次のベスト プラクティスに従ってください。
- SSL 証明書を最新の状態に保つ: SSL 証明書の有効期限を定期的に確認し、期限が切れる前に更新してください。
- 証明書チェーンを監視する: 検証の問題を回避するために、サーバーが中間証明書を含む完全な証明書チェーンを提供していることを確認します。
- クライアント証明書ストアを定期的に更新する: 最新のルート証明書を使用してクライアント システムを最新の状態に保ちます。
- 信頼できる認証局を使用する: 互換性と信頼性を確保するために、よく知られた信頼できる認証局から SSL 証明書を常に取得してください。
結論
「SSL 証明書の問題: ローカル発行者の証明書を取得できません」エラーは、クライアントが SSL 証明書の信頼チェーンを検証できない場合に発生する一般的な SSL 検証の問題です。問題の原因が中間証明書の欠落、古い証明書ストア、またはサーバーの構成ミスのいずれであっても、この記事で説明する解決策は問題を解決し、安全な通信を復元するのに役立ちます。
以上がSSL 証明書の問題: ローカル発行者の証明書を取得できない – 原因と解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。