私はmumbleのjava clientをC#に移植しています。少し壁を打ってしまいました。私はこのようなC#のにこれを移植しましたJavaからC#へのSSLアプリケーションの移植
final SSLContext ctx_ = SSLContext.getInstance("TLS");
ctx_.init(null, new TrustManager[] { new LocalSSLTrustManager() }, null);
final SSLSocketFactory factory = ctx_.getSocketFactory();
final SSLSocket sslSocket = (SSLSocket) factory.createSocket(hostAddress, port);
sslSocket.setUseClientMode(true);
sslSocket.setEnabledProtocols(new String[] { "TLSv1" });
sslSocket.startHandshake();
:今
return ssl = new SslStream(netStream, false, (a, b, c, d) => true); //For now, accept any cert
ssl.AuthenticateAsClient(serverName);
、これは実際に接続を確立しないが、それはだ
Javaでは、SSLソケットはそうのように開始され、 AES128を使用し、mumble protocolにはAES256が必要なので、サーバーはこのソケットで送信したものをすべて無視します。
私のコードは正しく移植されていますか?そして、C#にこの接続にAES256を使用させる方法がありますか?
プロトコルで許可されていない場合、サーバーはAES-128接続を受け入れるのはなぜですか?あなたのJavaクライアントがAES-256を使用していたことと、C#クライアントがAES-128を使用していることをどのように知っていますか? –
SSLストリームには、使用する暗号化のタイプ(この場合はAES)を128という強さで知らせるプロパティがあります。問題はサーバーが物事を無視していたことではなく、パケットレイアウトのドキュメントが悪いことでした。しかし、私は256ビットに暗号化を強制する方法があるかどうかを知りたいです。 – Martin
AES-256を使用するサーバー上の暗号スイートのみを有効にしてください。クライアントでも同じことができますが、それはやや難しいかもしれません。 Googleが迅速に見つかりました:http://stackoverflow.com/questions/91304/nets-sslstream-is-always-negotiating-to-the-least-secure-cipher-i-have-how-ca –