問題タブ [sslstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#はSocket.Connectedを使用していますがSslStreamを壊しますか?
Socket.Connectedを使用して、まだ接続されているソケットがSslStreamを壊すかどうかを判断するかどうかを知りたいです。
c# - 暗号化のための SslStream での C# リレー
データをハッシュしたり、他の暗号化アルゴリズムを追加したりする必要がないように、SslStream をリレーして送受信データをすべて暗号化できますか?
c# - SSLStream: 「SSPI の呼び出しに失敗しました」例外
私は奇妙な問題を抱えています..net 2 SslStreamを介してチャットしている.net2に基づいてc#でサーバーとクライアントを書きました。Cl と S の間でコマンドを送信するための接続が 1 つあり、cl と s の間でファイルを送信するための接続が 1 つあります。
ローカルでは、すべてが私の Windows マシンで正常に動作しています。しかし、Linux サーバー (mono を使用) でサーバーを実行すると、特定の状況でファイルの共有が機能しません。ファイルにはさまざまなカテゴリがあり、3 つのうち 2 つが機能しており、3 つ目はサーバーがハングアップしSSLStream.AuthenticateAsServer(....);
、クライアントが「SSPI への呼び出しに失敗しました。内部例外を参照してください」というメッセージで例外をスローします。innerexception は System.ComponentModel.Win32Exception で、「受信したメッセージは予期しないものであるか、形式が正しくありません。」というメッセージが表示されます。
Linuxで実行する方法が間違っている可能性があると思います。実際、私はローカル開発にVS2012を使用しており、サーバーに配置したい場合は、VSでコンパイルされたexeをアップロードし、それを使用mono server.exe
して起動します。しかし、Windowsでmonodevelopを使用してコンパイルし(monodevelopからコンパイルされたものもローカルで動作します)、Linuxサーバーで使用しようとしましたが、これは同じ結果になりました。
どんな助けでも大歓迎です。
私の短縮コードは次のとおりです。
クライアント:
サーバ:
c# - COM オブジェクトとしてアクセスした場合の SslStream の応答が異なる
コードの大部分が C++ であるプロジェクトに取り組んでいます。ショップは長期的には C# に移行しているため、可能な限り C# で新しいコードを作成し、COM 経由で C++ に公開しています。
System.Net.Sockets.SslStream とその他の機能を、メッセージの送受信を目的とした COM オブジェクトにラップしました。テスト C# プログラムからこのクラスの関数を呼び出すと、問題なくメッセージを送受信できます。COM を介して公開されている同じ呼び出しを行うことも同様に機能するようですが、送信直後にデータを受信することはできません。
C# のテスト データでは、データの送受信が非常に迅速に行われ、必要な応答が得られます。C++ からは、常にタイムアウト エラーが発生します。Read を呼び出す関数のデータは、C# テストと C++ プログラムで同じです。SslStream の状態の多くは同じです。write 呼び出しの直後と Read の前の唯一の違いは、いくつかのハンドルとメモリ アドレスのように見えるものですが、それらは重要ではないと思います。同時に、'base' という項目、'InnerStream' という項目、'System.Net.Sockets.NetworkStream' の中に 'DataAvailable' というプロパティがあることに気付きました。これは、機能する C# テストでは true であり、失敗する C++ プログラムでは false です。
トラブルシューティングやコードのスニペットについて、さらに詳しい情報を提供できます。問題に関連する部分だけでも膨大な量になるため、ここにはコードを含めませんでした。何が起こっているのかについて何らかの魔法の答えがあることを願っていますが、エラーはほぼ確実に詳細で非常に具体的です. さらなるトラブルシューティング手順についての洞察を提供するものであれば何でもいただければ幸いです。
COM を介して C# を呼び出すと、考慮していない可能性がある複雑な問題は何ですか?
SslStreamバッファに入っていない場合、反対側のメッセージはどこに行きましたか?
どこを見ればいいですか?
c# - Ubuntu で Mono を使用して APNS サービスに接続する
Apple の APNS サービスへの接続を確立しようとしています。UbuntuでMonoを実行しています。接続を確立するために使用されているコードは、Windows 環境で問題なく動作します。コードは、Web サイトやサービスではなく、NT サービス (システム プロセス) の一部です。
環境に関する情報は次のとおりです。Ubuntu 12.10。モノ 3.0.5。Mono の Certmgr の使用:
- APNS 証明書を Mono マシンの証明書ストア (MY) にインストールしました。
- APNS 証明書の秘密鍵を Mono マシンの証明書ストア (キーペア) にインストールしました。
- Entrust.net 認証局 (2048) ルート証明書を Mono マシンの証明書ストア (TRUST) にインストールしました。
- Entrust Certification Authority - 1LC Intermediate Certificate を Mono マシンの証明書ストア (CA) にインストールしました。
Telnet は、gateway.push.apple.com:2195 に到達できます。MonoDevelop でコードをデバッグしています。MonoDevelop はルート (gksudo) として実行されています。
これが私が受け取っているエラーです:
接続を確立するために使用しているコードは次のとおりです。
デバッガーからの詳細情報:
m_certColl には、1 つの証明書 (APNS 証明書) が含まれている必要があります。公開鍵と秘密鍵の両方が入力されていることをデバッガーで確認しました。RemoteCertificateValidationCallback は SslPolicyErrors を返しません。チェーンに 3 つの証明書が含まれていることを確認できます。1 つは、gateway.push.apple.com の Apple の公開鍵を含み、1 つは Entrust の中間証明書を含み、1 つは Entrust のルート証明書を含みます。
私はすべてを 2 回、3 回チェックしましたが、ここからどこへ行くべきかわかりません。どんな助けでも大歓迎です!
c# - .NETsslstreamを使用したサーバー/プロキシ/クライアント証明書の理解
プロキシサーバーにTcpListenerを使用し、クライアントとプロキシ間およびプロキシとターゲットサーバー間の通信にTcpCLientを使用して、C#でTCPプロキシを作成しています。これは本当にうまくいきます。
SSLおよびTLS暗号化通信もサポートする必要があります。これはほとんどうまくいきます。次のコードを使用して、プロキシからターゲットサーバーへのSslStreamを作成します。
そして、次のコードを使用して、プロキシからクライアントへのSslStreamを作成します。
証明書はX509Storeからロードされます。
これは、クライアントに証明書を手動で信頼させる場合にもうまく機能します。
私の質問は次のとおりです。
- (すべての)クライアントに証明書を信頼させるにはどうすればよいですか?
- すべてのクライアントに有効などの種類の証明書がプロキシに必要ですか?
- 必要に応じて、クライアントにプロキシを信頼させるために、どのような種類のクライアント証明書をインストールする必要がありますか?
- opensslまたはmakecertを使用して必要な種類のプロキシを作成するにはどうすればよいですか?
ストリームを読み取って操作する必要があるため、SSL通信がプロキシをスローしたことをトンネリングしたくありません。
[更新]はい、GoogleとStackOverflowでの検索を使用しましたが、別の解決策を試しましたが、成功しませんでした。また、次のスレッドで解決策を試しました。
SSLStreamの例-機能する証明書を取得するにはどうすればよいですか?
C#でクライアントによるサーバー認証のためにサーバー名を識別するにはどうすればよいですか?
[UPDATE2]これは、opensslを使用してCAとサーバー証明書を作成するための非常に優れたチュートリアルですが、私には機能しません: http ://webserver.codeplex.com/wikipage?title=HTTPS&referringTitle=Home
ssl-certificate - Makecert証明書は安全ですか?
を介して通信するアプリケーションを作成しました。ネットSSLStream
、および開発のために、私makecert.exe
は自己署名SSL証明書を作成していました。今、私はいくつかのマイクロソフトの記事を読みました、そのmakecertはテストのためだけに使われるべきです。
今私の質問は、アプリケーションはこの証明書で安全ですか、それともどのプログラムで安全で比較可能な証明書を作成できますか?編集:自己署名証明書はクライアントアプリケーションにハードコードされており、接続を確立するたびに比較されるため、中間者攻撃は機能しませんが、makecert証明書はどの程度ランダムですか
?
c# - SslStream.AuthenticateAsServer例外-サーバーモードSSLは、関連付けられた秘密鍵を持つ証明書を使用する必要があります
CCProxyに似たプロキシサーバーアプリケーションを開発しています。HTTPでは正常に機能しますが、HTTPSでは機能しません。AuthenticateAsServer()メソッドがSslStreamオブジェクトで呼び出された場合のスロー例外。また、適切な証明書を提供したかどうかもわかりません。証明書の作成方法もわかりません。オンラインでダウンロードしたコードに付属の証明書を提供しました。コードは次のとおりです。
また、sslStream.AuthenticateAsServerの代わりに、ssStream.AuthenticateAsClientメソッドを使用すると、「SSPIの呼び出しに失敗しました。内部例外を参照してください」というメッセージとともにAuthenticationExceptionが発生します。InnerExceptionは、「受信したメッセージが予期しないか、形式が正しくありませんでした」というメッセージを表示します。
sslstream.AuthenticateAsServer()メソッドを使用している場合、新しいHTTPSホストごとに証明書を作成し、このメソッドで渡す必要があります。自己署名証明書を提供すると、要求は成功します。しかし、問題は、証明書を手動で作成し続け、それをAuthenticateAsServer()に割り当てる新しいHTTPS要求がいくつあるかということです。
c# - SslStream Asynchronous Socketで送信されたパケットのサイズを知る方法
EndWriteには出力がないため、SslStream Asynchronous Socketで送信されたパケットのサイズを知る方法は?