1. ホーム
  2. security

[解決済み] SSLエラー: ローカルの発行者証明書を取得できない

2022-03-14 13:15:11

質問

Debian 6.0 32bitサーバでSSLを設定するのに苦労しています。SSLについては比較的初心者なので、どうかご容赦ください。できる限り多くの情報を含んでいます。
注:サーバーのアイデンティティと整合性を保護するために、真のドメイン名は変更されています。

設定方法

サーバーはnginxで動作しています。以下のように構成されています。

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

に記載されている方法で証明書をチェインしました。 ここで

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

ここで mysite.ca.crt は署名機関から渡された証明書で bundle.crt は、同じく署名機関から送られてきたCA証明書です。問題は、SSL証明書をGlobalSignから直接購入したのではなく、ホスティングプロバイダーのSinglehopを通して購入したことです。

テスト

SafariとChromeでは証明書が正しく検証されましたが、Firefoxでは検証されませんでした。最初に検索したところ、CAに問題がある可能性があることがわかりました。

の答えを探りました。 類似質問 しかし、それぞれの証明書がどのような目的で使用されているのかがよく分からないため、解決策を見出すことができませんでした。

opensslのs_clientを使って接続をテストしたところ、次のような同じ問題を示すと思われる出力が得られました。 似たような質問 . エラーの内容は以下の通りです。

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

opensslのレスポンスの詳細(証明書や不要な情報を切り捨てたもの)は、以下のとおりです。 こちら .

また、警告も表示されますね。

No client certificate CA names sent

これが問題である可能性はあるのでしょうか?どうすればnginxがこれらのCA名を送信することを確認できますか?

問題解決の試み

GlobalSignからルートCAを直接ダウンロードして問題を解決しようとしましたが、同じエラーが表示されました。DebianサーバーのルートCAを更新するために update-ca-certificates コマンドを実行しましたが、何も変わりませんでした。これは、プロバイダーから送られてきたCAが正しかったので、証明書が2回連鎖することになり、それが原因だと思われますが、どうにもなりません。

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

次のステップ

何か試せることがあるか、あるいは全体の設定が間違っているだけなのか、教えてください。

解決方法は?

jwwの言うとおりです。間違った中間証明書を参照しています。

SHA256証明書が発行されたので、SHA256中間体が必要です。こちらから入手できます。 http://secure2.alphassl.com/cacert/gsalphasha2g2r1.crt