2012-03-08 18 views
0

私はmumblejava 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を使用させる方法がありますか?

+0

プロトコルで許可されていない場合、サーバーはAES-128接続を受け入れるのはなぜですか?あなたのJavaクライアントがAES-256を使用していたことと、C#クライアントがAES-128を使用していることをどのように知っていますか? –

+0

SSLストリームには、使用する暗号化のタイプ(この場合はAES)を128という強さで知らせるプロパティがあります。問題はサーバーが物事を無視していたことではなく、パケットレイアウトのドキュメントが悪いことでした。しかし、私は256ビットに暗号化を強制する方法があるかどうかを知りたいです。 – Martin

+1

AES-256を使用するサーバー上の暗号スイートのみを有効にしてください。クライアントでも同じことができますが、それはやや難しいかもしれません。 Googleが迅速に見つかりました:http://stackoverflow.com/questions/91304/nets-sslstream-is-always-negotiating-to-the-least-secure-cipher-i-have-how-ca –

答えて

0

コードは問題ありませんが、TLS 1.2は有効になっていないため、ウィンドウズはAES256サポートを有効にしていません。 Javaは独自のSSL実装を使用しています。その結果、サーバとのネゴシエーション時に、最も強力な暗号ウィンドウがデフォルトでサポートされているため、AES128が選択されます。

このsiteによると、次のpowershellスクリプトを実行すると、TLSでAES256を有効にして問題を解決する必要があります。私はそれを実行する前に面白い何かをしないことを確認したいと思います。

# Enables TLS 1.2 on Windows Server 2008 R2 and Windows 7 
# June 27, 2010 
# Version 1.2 
# These keys do not exist so they need to be created prior to setting values. 

md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" 

md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" 

md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" 

# Enable TLS 1.2 for client and server SCHANNEL communications 

new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord" 

new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord" 

new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord" 

new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord" 

# Disable SSL 2.0 (PCI Compliance) 
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" 

new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord" 
関連する問題