SSLエラー:ローカル発行者証明書を取得できません


95

Debian 6.0 32ビットサーバーでSSLを設定できません。SSLは比較的新しいので、ご容赦ください。できる限り多くの情報を掲載しています。
注:サーバーのIDと整合性を保護するために、実際のドメイン名が変更されました。

構成

サーバーは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名を確実に送信するようにするにはどうすればよいですか?

問題を解決する試み

ルートCAをGlobalSignから直接ダウンロードして問題を解決しようとしましたが、同じエラーを受け取りました。update-ca-certificatesコマンドを使用してDebianサーバーのルートCAを更新しましたが、何も変更されませんでした。これは、私のプロバイダーから送信された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

次のステップ

試すことができるものがあるかどうか、または全体の設定が間違っているかどうかをお知らせください。


10
ドメイン証明書は発行者によって署名されていAlphaSSL CA - SHA256 - G2ます。ただし、チェーンは中間を供給しますAlphaSSL CA - G2。私はあなたが現在の中間証明書を(削除する必要があると考えているAlphaSSL CA - G2)、および指紋を持つものと交換しますae:bf:32:c3:c8:32:c7:d7...AlphaSSL CA - SHA256 - G2)。また、を送信する必要ありませんGlobalSign Root CA。クライアントは、その信頼をルートする必要があります(または中間)。
jww 2014年

6
これをOpenSSLでローカルにテストすることができます。お試しくださいopenssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>。コマンドは、Verify OK (0)または同様のもので完了する必要があります。を取得するVerify OK (0)と、サーバーは適切に構成されています(この問題の場合)。
jww 2014年

6
その新しい中間体をダウンロードしたら、それをPEMに変換する必要がありますopenssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM
jww 2014年

綺麗な。私はそれが今働いていると信じています。なんらかの理由でSHA 256を取得しようとしたが、正しく変換できなかったに違いない。誠にありがとうございます。
ジェイミーカウンセル2014年

1
ええ、探す必要があるのは、ルートとCAに戻るサブジェクトと発行者のペアです。OpenSSLのディスプレイとしてそれらi:s:s_client。必要な証明書を取得したら、ルート以外のすべての証明書を連結します。これらは連結されているため、PEM形式である必要があります。URLは役に立ちました。古くなって情報を提供しない人々を助けようとしているので、ローカルでで情報を見ることができますs_client。(URLを提供しなかった場合、私は投票に投票したでしょう)。
jww

回答:



-1

Linuxユーザーの場合は、次のコマンドを実行して、ノードを新しいバージョンに更新します。

sudo apt update

 sudo apt install build-essential checkinstall libssl-dev

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash

nvm --version

nvm ls

nvm ls-remote

nvm install [version.number]

これはあなたの問題を解決するはずです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.