web-dev-qa-db-ja.com

Mercurial / TortoiseHgでSSL証明書チェックを完全に無効にする方法は?

私は--insecureオプションをhg\TortoiseHgコマンドのデフォルトのオプションにする方法を探しています。

これは悪い習慣だと書かないでください-私は起こりうるリスクを認識し、それらが完全に受け入れられると考えます。

41
Alex Yakunin

[web]セクションのcacertsを空の文字列に設定するのも同じことです。 ソース から:

if cmdoptions.get('insecure', False):
    ui.setconfig('web', 'cacerts', '!', '--insecure')

これは wikiが確認します

自己署名証明書を持つホストを扱う場合など、セキュリティチェックを無効にすると便利な場合があります。これは、コマンドラインでCA証明書の構成を無効にすることで実行できます。

hg Push --config web.cacerts = https:// self-signed-Host/repo

したがって、cacerts=!をグローバルhgrcの[web]セクションに配置すると(Linuxライクでは/etc/Mercurial/hgrc)、そこに到達します。

25
Ry4an Brase

プッシュ/プル中の証明書のフィンガープリント警告を排除することが目標である場合、これを行うためのより良い方法があります。 .hg/hgrc(または〜/ .hgrc-コメントを参照)の[hostfingerprints]を使用します。

[hostfingerprints]
server.example.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc

これにより、セキュリティチェックを排除せずに警告が排除されます。

注:別の回答へのコメントから、この解決策を既に見つけていることがわかります。他の誰かが同じ問題を抱えている場合に備えて、とにかくこれを投稿しています。

34
Bruce Alderman

aliases を使用してそれを実現できます。これを.hgrcに追加します:

[alias]
Push = Push --insecure

問題は、使用するコマンドごとにこれを実行する必要があることです。エイリアスには、デフォルトとは異なる名前を使用することをお勧めします。

私の知る限り、すべてのコマンドに対して「自動的に」--insecureを強制する方法はありません。

18
krtek

バックグラウンド

ブルース・アルダーマンの答え で指摘したように、_--insecure_オプションを使用する代わりに、ホストの指紋を_~/.hgrc_ファイル。 (おそらく、セキュリティリスクのために_.hg/hgrc_に追加することは禁止されています。)_[hostfingerprints]_セクションは非推奨になりました。

新しい指示

以下を_~/.hgrc_に追加します。

_[hostsecurity]
<Host>:fingerprints=sha256:<hash>
_

ここで、_<Host>_は(_https://_プレフィックスなしで)ホスト名に置き換えられ、_<hash>_はSHA-256指紋(32バイト、_:_- 16進数で区切られます)。次の出力 SHA-256指紋コマンド

_openssl s_client -connect <Host>:<port> < /dev/null 2>/dev/null | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin
_

_<Host>_と_<port>_を代入した後の形式は

_SHA256 Fingerprint=<hash>
_

たとえば、ローカルマシンから実行される自己署名証明書の場合、_~/.hgrc_に次のようなエントリが含まれる場合があります。

_[hostsecurity]
localhost:fingerprints=sha256:DD:30:5A:9B:2C:E1:59:7E:46:C4:42:D3:41:34:03:17:2A:CF:50:E8:DF:78:E6:2E:C9:42:D9:9A:C9:58:AC:52
_

セキュリティで保護された接続に関する Mercurialのページには、さらにドキュメントがあります。

1
Ben Mares