web-dev-qa-db-ja.com

再インストールせずに、Windows Gitの「OpenSSLライブラリ」から「ネイティブWindowsセキュアチャネルライブラリ」に切り替えますか?

WindowsマシンへのGitのインストール中に、HTTPSトランスポートバックエンドに[OpenSSLライブラリを使用する]を選択しました。

HTTPSトランスポートを「ネイティブWindowsセキュアチャネルライブラリ」に切り替えたい。

Windowsにgitを再インストールせずにこれは可能ですか?

9
Saqib Ali

この問題はGit for Windows開発者によって解決されています: https://github.com/git-for-windows/git/issues/1274

0
Saqib Ali

Git for Windows 2.14.2、64ビットの「schannel」または「openssl」の設定がファイルに見つかりました。

C:\Program Files\Git\mingw64\etc\gitconfig

OpenSSLの設定例:

[http]
sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = openssl

Windowsネイティブの設定例:

[http]
sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
5
JasonS

これは、Git 2.20(2018年第4四半期)で正式にサポートされるようになりました。最近のcURLライブラリを備えたプラットフォームでは、http.sslBackend構成変数を使用して、実行時に別のSSLバックエンドを選択できます。
Windowsポートはこのメカニズムを使用して、HTTPSプロトコルで通信しながらOpenSSLとセキュアチャネルを切り替えます

commit b67d40a (2018年10月25日)および Johannes Schindelin(dscho による commit 21084e8 (2018年10月15日)を参照してください。
Brendan Forster(shiftkey による commit 93aef7c (2018年10月25日)を参照してください。
Junio C Hamano-gitster- によってマージ commit d7b1859 、2018年11月2日)

http:実行時にSSLバックエンドを選択するためのサポートを追加

バージョン7.56.0以降、curlは複数のSSLバックエンドでのコンパイルをサポートしています。

このパッチは、その機能のGit側を追加します。http.sslBackendを "openssl"または "schannel"に設定することで、Git for Windowsが実行時にSSLバックエンドを選択できるようになりました。

セキュアチャネル(「schannel」)はネイティブソリューションであり、Windows資格情報ストアにアクセスして、企業全体の証明書の管理を可能にするため、これはWindowsで役立ちます。
過去10年間、Git for Windowsでサポートされている唯一のSSLバックエンドであったため、歴史的な理由から、Git for WindowsはOpenSSLをサポートする必要があります。

このパッチはGit for Windowsで1年以上実行されており、成熟していると見なされています。

2
VonC

Git for Windowsメンテナーから このスレッド をチェックアウトできます。

はい、それは可能であり、 にあるインストーラーのソースコードを検査することで、それがどのように行われるかを正確に知ることができますhttps://github.com/git-for-windows/build-extra はinstaller/install.issファイルにあります(このファイルはgit grep "Secure Channel")。

関連する部分は、インストーラがGC_WinSSLオプションをテストして、ユーザーの選択を記録するよりも興味深いことを行う場合です。

if RdbCurlVariant[GC_WinSSL].Checked and (not
    ReplaceFile(BinDir+'curl-winssl\curl.exe',BinDir+'curl.exe') or not
    ReplaceFile(BinDir+'curl-winssl\libcurl-4.dll',BinDir+'libcurl-4.dll'))
then begin
            Log('Line {#__LINE__}: Replacing curl-openssl with curl-winssl failed.');
end;

を参照してくださいhttps://github.com/git-for-windows/build-extra/blob/97c8294b584ae4b99059a1194a5eba24ee2ff1ab/installer/install.iss#L1774

つまり、インストーラーは、\ mingw64\bin(または32ビットの同等物)内のcurl.exeおよびlibcurl-4.dllファイルを、\ mingw64\curl-winssl内のファイルで置き換えようとします。

1
VonC