Gitは.gitconfigのhttp.sslcainfoプロパティを認識しているようですが、実行時にそれを無視しますか?SEC_E_UNTRUSTED_ROOT


10

すべて、有効な証明書チェーン(OpenSSLでテスト可能)がありますが、どういうわけかこれらの証明書をロードするようにGitに指示することができません。

私が得る同じ「信頼できないルート権限」エラー(SEC_E_UNTRUSTED_ROOT)を独立して、既存または偽の証明書チェーンファイルにするかどうか、私のgitの構成ポイントの。

詳しくは、添付のスクリーンショットをご確認ください。ここに画像の説明を入力してください

.gitconfig偽のファイルに使用する設定:

sslCAInfo = C:/tmp/foobar.crt

または、OpenSSLで動作する実際のファイルの場合:

sslCAInfo = C:/tmp/ca-bundle.crt

コンソールの筆記録:

C:\tmp>openssl version
OpenSSL 0.9.8h 28 May 2008

C:\tmp>git --version
git version 2.12.2.windows.2

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/ca-bundle.crt

C:\tmp>dir
24.04.2017 13:45 10.875 ca-bundle.crt

c:\tmp>openssl s_client -state -connect https://mygithost:443 -CAfile .\ca-bundle.crt

Verify return code: 0 (ok)

C:\tmp git clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

C:\tmp> git -c http.sslverify=false clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
Resoliving deltas: 100%, done.

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/foobar.crt

C:\tmp\xxx\git pull
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

あなたのgit設定にタイプミスがあります:tmpの代わりにtml
Tensibai

私は奇妙なgitがfakepathでエラーを発生させないことを発見しました。他の構成レベル(グローバル、ユーザー、レポ)を確認する必要があります。フォールバックがどこかにある可能性があります
Tensibai

@Tensibaiは、手順またはドキュメントへのリンクを提供してください。すべてを印刷する方法がわかりません。たとえば、git config --global --listは機能しません。
Peter Muryshkin 2017

Git config --get-allは、システム、グローバルおよびローカルからのすべての結果の構成を表示するために実行する必要があります(電話にいることを確認できません。これは単なる推測です。回避策は、set SSL_CERT_FILE=C:\tmp\ca-bundle.crtopensslにバンドルの場所を教えることです
Tensibai

C:\git config --get-all-- => error: wrong number of arguments
Peter Muryshkin

回答:


2

新たにインストールした直後にこれに見舞われたので、ここで私がそれを乗り越えました:

あなたのログから(強調は私のものです):

致命的:アクセスできません...:schannel:次のInitializeSecurityContextが失敗しました:

gitはschannel(windowsネイティブ実装)を使用するように構成されていますが、schannelはcainfoバンドルではなく、windows certsバンドルを使用します。

opensslに切り替えてカスタムバンドルファイルを使用するには、次のコマンドを使用します。

git config --system http.sslbackend openssl

そして今、gitはhttp.sslcainfoで渡されたCAバンドルを尊重します。

あるいは、私のエラーは暗号スイートの問題であったので、次のリンクに興味があるかもしれません:


1

私は1年前に似たようなものを持っていたので、覚えておきたいと思います-

すべての証明書チェーンがcrtファイルに含まれている必要があります。bitbucket証明書とルート証明書(包括的)の間のすべての中間証明書があることを確認します。

あなたはここでそれらをpemフォーマット(私はcrtであなたのケースだと思います)に追加するための正しいフォーマットを見ることができます

私の証明書は、私がその問題を抱えていたときにComodoによって署名されました。証明書と中間体は、ほとんどのシステムで提供されているデフォルトのca-bundleにありませんでした。

お役に立てば幸いです。

編集:今、私はそれが偽のものでも起こることに気づきました-システムのデフォルトの既知の証明書をチェックしてみてください(各システムはそうです)。WindowsではWindows証明書のmmcスナップインにアクセスできます。

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