2016-07-29 14 views
1

JDK8でTLSをテストするためのテストコード(HTTPSではなく)を書きます。テストコードが実行されると、私はスキャンすると、次のようになりますnmapのツールを使用します。変更ソースコードなしでTLSv1を無効にするにはどうすればよいですか?

D:\softwares\nmap-7.12>nmap -p xxxx --script=ssl* x.x.x.x --unprivileged 


Starting Nmap 7.12 ( https://nmap.org ) at 2016-07-26 15:33 °?′óà????÷2?±ê×?ê±?? 
Nmap scan report for x.x.x.x 
Host is up (1.0s latency). 
PORT     STATE  SERVICE 
xxxx/tcp open unknown 
| ssl-enum-ciphers: 
|  TLSv1.0: 
|    ciphers: 
|      TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) -A 
|    compressors: 
|      NULL 
|    cipher preference: indeterminate 
|    cipher preference error: Too few ciphers supported 
|  TLSv1.1: 
|    ciphers: 
|      TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) -A 
|    compressors: 
|      NULL 
|    cipher preference: indeterminate 
|    cipher preference error: Too few ciphers supported 
|  TLSv1.2: 
|    ciphers: 
|      TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) -A 
|    compressors: 
|      NULL 
|    cipher preference: indeterminate 
|    cipher preference error: Too few ciphers supported 
|_ least strength: A 
MAC Address: xx:xx:xx:xx:xx:xx 


Nmap done: 1 IP address (1 host up) scanned in 3.88 seconds 


D:\softwares\nmap-7.12> 

JDK8がデフォルトとしてTLSv1.0を可能にしますが、私はそれを無効にしたいです。

Protocols 
The SunJSSE provider supports the following protocol parameters: 
Protocol Enabled by Default for Client Enabled by Default for Server 
SSLv3  No(Unavailable Footnote 2)  No(Unavailable Footnote 2) 
TLSv1  Yes        Yes 
TLSv1.1  Yes        Yes 
TLSv1.2  Yes        Yes 

https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols

私は私のテストコードにjavax.net.ssl.SSLEngineクラスの "setEnabledProtocols" メソッドを呼び出す、TLSv1.0は完全に無効にすることができます。 変更コードなしでTLSv1.0を無効にする方法はありますか?例えば設定ファイルを介して。
Iは以下のようないくつかの方法を試みたが、誰もが所望の効果を達成することができない:(
1 -Djdk.tls.client.protocols = TLSv1.1、TLSv1.2
2 -Ddeployment.security.TLSv1 =ここで偽

は、Javaのバージョンです:あなたは、サーバーを書いているように見える、とjdk.tls.client.protocolsは名前、したがって、クライアントに適用され

java version "1.8.0_92" 
Java(TM) SE Runtime Environment (build 1.8.0_92-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode) 

答えて

1

;もののやや明瞭で、基本のJava SE「展開」でブラウザ - 意味またはクライアントのサブセットであるWebStart。

TLS(またはHTTPS)サーバープロトコル専用のプロパティはありませんが、セキュリティプロパティjdk.tls.disabledAlgorithmsはクライアントとサーバー(およびすべてのコンテキストタイプ)に適用され、リンクしたページに記載されているようにJRE/lib/security/java.securityに設定できます。あなたのものを追加している間は、既存の制限(特にSSLv3の削除、8u31以降の削除)を守ってください。

+0

警告の買い手、 '-D'ます*' jdk.tlsのためではない*作業.disabledAlgorithms'、あなたが提案したように、 'java.security'ファイルに入るべきです。 – kubanczyk

0

ご返信いただきありがとうございます。 JRE/lib/security/java.securityを変更すると、それはグローバルな影響を与えます。

私の解決策は次のとおりです。 JRE/lib/security/java.securityを新しいファイルにコピーし、TLSv1をjdk.tls.disabledAlgorithmsに追加します。
そして、このようにJVMを起動します。
のjava -jar -Djava.security.properties=./java.security xxxxxはここ

JRE/lib/security/java.securityからの要約です:

# 
# This is the "master security properties file". 
# 
# An alternate java.security properties file may be specified 
# from the command line via the system property 
# 
# -Djava.security.properties=<URL> 
# 
# This properties file appends to the master security properties file. 
# If both properties files specify values for the same key, the value 
# from the command-line properties file is selected, as it is the last 
# one loaded. 
# 
# Also, if you specify 
# 
# -Djava.security.properties==<URL> (2 equals), 
# 

# 
# Determines whether this properties file can be appended to 
# or overridden on the command line via -Djava.security.properties 
# 
security.overridePropertiesFile=true 
関連する問題