問題タブ [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.
.net - .NET SslStream が TLS 接続を適切に閉じない
.NET のクラスは、接続を閉じる前にアラートをSslStream
送信しません。close_notify
close_notify
アラートを手動で送信するにはどうすればよいですか?
ssl - TCPサーバー上のSslStreamは、RemoteCertificateNotAvailableを使用してクライアント証明書を検証できません
この質問はすべてSslPolicyError.RemoteCertificateNotAvailable
エラーの解決に関するものです。
もう一方の端にSSLStreamとTCPクライアントを備えたTCPサーバーを開発しました。
サーバーを次のように認証します。
クライアントを次のように認証します。
からクライアント証明書を読み込んでいますTrusted Publishers - Local Machine
。
両方とも同じマシンで実行されています。
信頼できる発行元ストアではなく、.cerファイルと.pfxファイルからクライアント証明書をロードしてみました。ただし、サーバーのクライアント(リモート)証明書バリデーターのコールバックSslPolicyErrors
は、RemoteCertificateNotAvailable
エラーがあることを検出して失敗します。
c# - ピアツーピア認証にSSLとSslStreamを使用していますか?
通信にTCP/IPソケットを使用しているさまざまなプロセス間で安全な通信を提供する必要があります。認証と暗号化の両方が必要です。車輪の再発明ではなく、SSLとSslStreamクラスおよび自己署名証明書を使用したいと思います。私がやりたいのは、ローカルアプリケーションの既知のコピーに対してリモートプロセスの証明書を検証することです。(証明書を手動でコピーするつもりなので、認証局は必要ありません)。
これを行うには、アプリケーションが最初に実行されたときに新しい証明書を自動的に生成できるようにする必要があります。makecert.exeに加えて、このリンクは自己署名証明書を自動的に生成する方法を示しているように見えるので、それが始まりです。
SslStreamのAuthenticateAsServerメソッドとAuthenticateAsClientメソッドを見てきました。確認のためにコールバックを提供できるため、可能であるように見えます。しかし、今はその詳細に精通しているので、これを行うことは本当に不可能だと思います。
私は正しい方向に進んでいますか?より良い代替案はありますか?誰かが以前にこのようなことをしたことがありますか(基本的にクライアントサーバーではなくピアツーピアSSL)?
c# - SslStreamは、サーバーとして機能するときにLocalCertificateSelectionCallbackを使用しますか?
次のようなSslStreamインスタンスを作成する場合:
次に、AuthenticateAsServerメソッドまたはBeginAuthenticateAsServerメソッドのいずれかを使用しますが、LocalCertificateSelectionCallback(tlsLocalCallback)を呼び出すことは可能ですか?もしそうなら、どのように?
AuthenticateAsServerメソッドにはX509Certificateパラメーターが必要なため、これは不可能であるという印象を受けています。また、nullを渡すと、例外がスローされます。しかし、チームの他の開発者が使用できるソケットAPIを作成しようとしているので、確実にしたいと思います。
c# - IOCP での SslStream の使用
Socket クラスの非同期/IOCP メソッド、BeginSend()/BeginRead()/etc を使用して TCP サーバーを作成しました。SslStream を使用して SSL 機能を追加したいのですが、インターフェイスからは、特に Streams をまったく使用しておらず、SslStream が動作する Stream に依存しているように見えるため、Socket と SslStream は連携することを意図していないように見えます.
これは可能ですか、それとも間違った場所を探していますか? Socket インスタンスにフィードする独自の Stream サブクラスを作成し、それを SslStream に指定する必要がありますか? スケーリングの問題から、サーバーで IOCP を使用することが重要です。
c# - Socket.ReceiveAsync と SslStream
Begin* End* 非同期モデルのみをサポートする SslStream を介して読み取りを行う必要があるため、SslStream を使用すると ReceiveAsync の利点が得られないようです。
認証が完了するまで SslStream を使用し、それ以降はソケットに直接アクセスすることは可能ですか? つまり、ネゴシエートされたセキュリティのレベルを調べてから、自分でバッファに正しい暗号化/復号化を適用する必要があります。送信前に暗号化、受信後に復号化。
これは実行可能ですか?
ありがとう!
c# - サーバーアプリでSslStreamとX509Certificate2で中間証明書を使用する
SslStreamを使用してSSLソケットを提供する.Netサーバーアプリケーションに取り組んでいます。一部のクライアント(libcurlに基づくクライアントなど)では機能しますが、中間証明書がないために他のクライアントがエラーをスローします。これらのクライアントを満足させるために、中間証明書をSslStreamまたはX509Certificate2オブジェクトに関連付けるにはどうすればよいですか?
接続を受け入れるときに現在使用しているコードは次のとおりです。
OpenSSLを使用している場合は、これを使用しますSSL_CTX_add_extra_chain_cert()
。X509Chainオブジェクトを見ましたが、どのように収まるかわかりません。
ありがとう。
.net - SslStream の SSL 証明書のセットアップ
SslStream をサーバーとして使用して、クライアントの SSL 証明書を生成する必要がある状況があります。
その方法 (makecert.exe) は知っていますが、接続の両側が認証されていることを確認しようとすると問題が発生します。
基本的に、自己署名証明書を使用する場合、信頼できるルートに追加して相互認証を機能させる必要があります。出来れば避けた方がいいと思います。SSL 証明書を購入できることは知っていますが、私の状況では、クライアントごとに異なる証明書を作成する必要があるため、クライアントごとに証明書を購入することは問題外です。
それを回避する方法はありますか?たぶん、購入できる証明書を使用して、より多くの証明書を生成できますか? お察しのとおり、私は一般的に SSL についてまったく無知です。
c# - iPhone Apple Push Notification Provider (apns-sharp) 使用時の SslStream.AuthenticateAsClient 例外
Apple プッシュ通知プロバイダー (apns-sharp) を使用すると、次の例外が発生します。
プッシュ通知は私の開発マシンでは機能しますが、Rackspace Cloud ホスティング内では機能しません。私は自分の開発環境で実行している正確な Rackspace Cloud のカスタム ミディアム トラスト構成を持っています。マシンなので、ここでは中程度の信頼が問題になることはありません。また、証明書ファイルは私の開発で機能するため、問題になることはありません。機械。
何か案は?
更新 #1:これは、Rackspace Cloud サーバー上にない可能性のある Entrust ルート サーバーと関係がありますか? apns-sharp コードにチェックインしたところ、証明書の検証が無視されているように見えますが、100% 確実ではありません。
certificate - 新しいマシンでの証明書の問題 - パッケージに提供された資格情報が認識されない
新しいマシンに Windows サービスをインストールしています。このサービスは、問題の証明書を使用する TCP 上の SslStream でさまざまな操作を実行します。
このサービスは、他の 2 台の Windows 2003 マシンで同じコードと同じ証明書を使用して正常に動作しています。ただし、この新しいマシンも 64 ビット プロセッサを搭載した Windows 2003 です。
「サービス アカウント」ID でサービスを実行しようとすると、この問題が発生します。自分の資格情報で問題なく動作します。(繰り返しますが、このサービス アカウントを持つ他の 2 台のマシンでは問題なく動作します)
証明書のインポート中に「強力な保護」が有効になっていません。
これがスタックトレースです。
System.ComponentModel.Win32Exception: パッケージに提供された資格情報が、System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential& secureCredential) at System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] 入力、Int32 オフセット、Int32 カウント、Byte[]& 出力) システムで.Net.Security.SecureChannel.NextMessage(Byte[] 着信、Int32 オフセット、Int32 カウント)
System.Net.Security.SslState.StartSendBlob (Byte[] 着信、Int32 カウント、AsyncProtocolRequest asyncRequest) で
System.Net.Security.SslState.ProcessReceivedBlob (Byte[] バッファー、Int32 カウント、AsyncProtocolRequest asyncRequest)
で System.Net.Security.SslState.StartReadFrame (Byte[] バッファー、Int32 readBytes、AsyncProtocolRequest asyncRequest)
で System.Net.Security .SslState.StartReceiveBlob(Byte[] バッファー、AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.CheckCompletionBeforeNextReceive (ProtocolToken メッセージ、AsyncProtocolRequest asyncRequest) で System.Net.Security.SslState.StartSendBlob(Byte[] 着信、Int32 カウント、AsyncProtocolRequest) asyncRequest)
System.Net.Security.SslState.ForceAuthentication (Boolean receiveFirst、Byte[] バッファー、AsyncProtocolRequest asyncRequest) で
System.Net.Security.SslState.ProcessAuthentication (LazyAsyncResult lazyResult) で System.Net.Security.SslStream.AuthenticateAsClient (文字列 targetHost、X509CertificateCollection clientCertificates、SslProtocols enabledSslProtocols、ブール値 checkCertificateRevocation) で