web-dev-qa-db-ja.com

OpenSSL errno 10054、サーバーに接続しようとしているときに接続が拒否されました

Https経由でgitサーバーを実行していますが、Visual Studioを使用して接続したため、接続に問題はありませんでした。今、誰かが標準のgit bashを使用したいと思っていますが、次のエラー出力で接続できません。

fatal: unable to access 'https://server/Repo.git/': Unknown SSL protocol error in connection to server:443

私はいくつかの異なる暗号スイートを試しましたが、何も機能しませんでした。それから、gitがまだECDSA証明書をサポートしていないのではないかと思いました。そこで、ECDSA証明書をRSAと交換しました。それもうまくいきませんでした。

次に、次のコマンドを使用してOpenSSLs_clientに接続してみました。

OpenSSL> s_client -connect server:443

これは、コマンドの実行からの出力です。

CONNECTED(0000018C)
write:errno=10054
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 307 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

私はグーグルでエラー番号を検索しました10054そしてそれは接続が拒否されたことを意味することがわかりました。 IIS 8.5を使用してgitサーバーのhttpsエンドポイントを提供します。すべてのWebブラウザーを介してWeb環境に接続でき、VisualStudioのgitインターフェイスを介してgitサーバーを使用できます。ファイアウォールの問題だとは思わない。誰かが以前にこの問題を経験したことがあるかどうか、そして彼らがここで私たちを助けることができるかどうか知りたいですか?

7
Feanaro

TLS1.0以降を使用していることを確認してください。一部のサーバーにはTLS1.2が必要です。サーバーが最大TLS1.2をサポートしているかどうかわからない場合は、上記のSteffen Ulrichの回答を見て、最初に試してください。

それでも問題が解決しない場合は、エンドポイントに [〜#〜] sni [〜#〜] が必要かどうかを確認してください。その場合、これが問題になる可能性があります。 servernameパラメータを接続先のサーバー名に設定してs_clientコマンドを呼び出すと、機能するはずです。

基本コマンドの例:

s_client -connect example.com:443 -tls1 -servername example.com

s_clientのオプションは s_clientのマニュアルページ にあります。

10
Feanaro

10054は接続が​​拒否されませんが、ピアによって接続がリセットされます。これは、TCP接続が正常に確立された(s_clientはCONNECTEDを示す)が、クライアントからサーバーにさらにデータを送信すると、サーバーはすべてのデータを読み取らずに接続を閉じた(そしてTCP RSTを送り返す)ことを意味します)。

これはファイアウォールの問題である可能性がありますが、サーバー構成に問題があることを示している可能性もあります。つまり、サーバーはクライアントを受け入れますが、構成が無効なため続行できません。このような無効な構成は、要求されたデータに対するアクセス許可の欠落、使用可能な秘密鍵のない証明書などである可能性があります。詳細については、サーバーログを確認することをお勧めします。

また、現在のTLSバージョンを理解せず、単に接続を閉じるサーバー、ロードバランサー、またはファイアウォールを備えたTCP RSTも確認しました。ブラウザは、より低いTLSバージョンで透過的に再試行することにより、この問題を回避します。 openssl s_client -ssl3がこのサーバーに対して機能し、証明書を受け取ったかどうかを試すことができます。

13
Steffen Ullrich