簡體   English   中英

Tomcat 6和TLSv1.2在Java中

[英]Tomcat 6 and TLSv1.2 In Java

我在tomcat 6中部署了一個Java應用程序。該應用程序通過套接字將消息發送到另一個服務,它只需要使用TLSv1.2協議。 在我的tomcat6.conf文件中,我把這個配置:

JAVA_HOME=/usr/lib/jvm/jre1.7.0_75
JAVA_OPTS="${JAVA_OPTS} -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Dhttps.protocols=TLSv1.2"

但是stll使用舊的tls版本。

有沒有任何配置適用於java或tomcat強制使用TLSv1.2?


編輯1: @Peter Walser提供的答案很好,可以工作。 問題是我無法修改代碼因為是第三方提供的jar,我只能配置環境而不是代碼。

https.protocols系統屬性僅考慮HttpsURLConnectionURL.openStream() ,如診斷TLS,SSL和HTTPS中所述

控制Java客戶端使用的協議版本,該客戶端通過使用HttpsURLConnection類或URL.openStream()操作獲取https連接。 ...

對於非HTTP協議,可以通過SocketFactory的SSLContext來控制。

您可以按如下方式配置SSLSocket:

SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setEnabledProtocols(new String[] {"TLSv1.2"});

使用REST客戶端時,大多數客戶端都支持通過SSLContext配置協議。 示例( JAX-RS客戶端):

Client client = ClientBuilder.newBuilder()
    .sslContext(SSLContext.getInstance("TLSv1.2"))
    // more settings, such as key/truststore, timeouts, logging
    .build();

如果您試圖強制服務器使用TLSv1.2,以下鏈接可能會提供您所需的內容。

Apache Tomcat 5.5 Servlet / JSP容器 - SSL配置HOW-TO


由於doc指定編輯Tomcat配置文件,如下所示,

Tomcat使用的SSL的實現是自動選擇的,除非它被覆蓋如下所述。 如果安裝使用APR - 即您已經安裝了Tomcat本機庫 - 那么它將使用APR SSL實現,否則它將使用Java JSSE實現。

要避免自動配置,可以通過在Connector的protocol屬性中指定classname來定義要使用的實現。 要定義Java(JSSE)連接器,無論是否加載APR庫,都要執行以下操作:

<Connector protocol="org.apache.coyote.http11.Http11AprProtocol" port="8443" .../>

$CATALINA_BASE/conf/server.xml文件中配置連接器,其中$CATALINA_BASE表示Tomcat 6實例的基本目錄。 用於SSL連接器的示例<Connector>元素包含在隨Tomcat一起安裝的缺省server.xml文件中。 對於JSSE,它應該看起來像這樣:

<!--
<Connector 
   port="8443" maxThreads="200"
   scheme="https" secure="true" SSLEnabled="true"
   SSLCertificateFile="/usr/local/ssl/server.crt" 
   SSLCertificateKeyFile="/usr/local/ssl/server.pem"
   clientAuth="optional" SSLProtocol="TLSv1"/>
-->

您將注意到默認情況下示例SSL連接器元素已注釋掉 您可以從要使用的示例SSL連接器周圍刪除注釋標記,也可以添加自己的新連接器元素。 在任何一種情況下,您都需要根據您的要求和環境配置SSL連接器。

端口屬性(默認值為8443)是Tomcat將偵聽安全連接的TCP / IP端口號。 您可以將其更改為您希望的任何端口號(例如,更改為https通信的默認端口,即443)。 但是,在許多操作系統上運行Tomcat的端口號低於1024時,必須進行特殊設置(在本文檔的范圍之外)。

完成這些配置更改后,您必須像平常一樣重新啟動Tomcat,並且您應該開展業務。 您應該能夠通過SSL訪問Tomcat支持的任何Web應用程序。


嘗試將<Connector>元素中的SSLProtocol屬性更改為SSLProtocol="TLSv1.2"

<Connector 
   port="8443" maxThreads="200"
   scheme="https" secure="true" SSLEnabled="true"
   SSLCertificateFile="/usr/local/ssl/server.crt" 
   SSLCertificateKeyFile="/usr/local/ssl/server.pem"
   clientAuth="optional" SSLProtocol="TLSv1.2"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM