2014-10-15 12 views
19

Có danh sách loại trừ cụ thể nào có thể vô hiệu hóa chỉ mật mã SSLv3 không phải là TLSv1/2 hay không.Cách vô hiệu hóa giao thức SSLv3 trong Jetty để ngăn chặn Poodle Attack

Tôi có cầu cảng 8 và nâng cấp lên 9 giờ không phải là tùy chọn. hiện tại cầu cảng-ssl.xml của tôi trông như sau

<Configure id="Server" class="org.eclipse.jetty.server.Server"> 
<Call name="addConnector"> 
    <Arg> 
     <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> 
      <Arg> 
       <New class="org.eclipse.jetty.http.ssl.SslContextFactory"> 
        ......... 
       </New> 
      </Arg> 
      <Set name="ExcludeCipherSuites"> 
       <Array type="java.lang.String">    
       <Item>SSL_RSA_WITH_NULL_MD5</Item> 
       <Item>SSL_RSA_WITH_NULL_SHA</Item> 
       <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item> 
       <Item>SSL_RSA_WITH_RC4_128_MD5</Item> 
       <Item>SSL_RSA_WITH_RC4_128_SHA</Item> 
       <Item>SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5</Item> 
       <Item>SSL_RSA_WITH_IDEA_CBC_SHA</Item> 
       <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> 
       <Item>SSL_RSA_WITH_DES_CBC_SHA</Item> 
       <Item>SSL_RSA_WITH_3DES_EDE_CBC_SHA</Item> 
       <Item>SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA</Item> 
       <Item>SSL_DH_DSS_WITH_DES_CBC_SHA</Item> 
       <Item>SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA</Item> 
       <Item>SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> 
       <Item>SSL_DH_RSA_WITH_DES_CBC_SHA</Item> 
       <Item>SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA</Item> 
       <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item> 
       <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item> 
       <Item>SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA</Item> 
       <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> 
       <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item> 
       <Item>SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA</Item> 
       <Item>SSL_DH_anon_EXPORT_WITH_RC4_40_MD5</Item> 
       <Item>SSL_DH_anon_WITH_RC4_128_MD5</Item> 
       <Item>SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA</Item> 
       <Item>SSL_DH_anon_WITH_DES_CBC_SHA</Item> 
       <Item>SSL_DH_anon_WITH_3DES_EDE_CBC_SHA</Item> 
       <Item>SSL_FORTEZZA_KEA_WITH_NULL_SHA</Item> 
       <Item>SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA</Item> 
       <Item>SSL_FORTEZZA_KEA_WITH_RC4_128_SHA</Item> 
       <Item>SSL_DHE_RSA_WITH_AES_128_CBC_SHA</Item> 
       <Item>SSL_RSA_WITH_AES_128_CBC_SHA</Item> 
       </Array> 
      </Set> 
     </New> 
    </Arg> 
</Call> 

vẫn khi tôi chạy "sslscan --no-thất bại localhost --ssl3: 443" tôi nhận được

Supported Server Cipher(s): 
    Accepted SSLv3 128 bits DHE-RSA-AES128-SHA 
    Accepted SSLv3 128 bits AES128-SHA 

Prefered Server Cipher(s): 
    SSLv3 128 bits DHE-RSA-AES128-SHA 
+1

Khai trương lỗi mới tại Jetty đã SSLv3 tắt theo mặc định bắt đầu từ năm Jetty 9,3 - https://bugs.eclipse.org/447381 –

Trả lời

13

tôi đã để tắt SSLv3 trong một ứng dụng mà chúng tôi tích hợp mã nguồn Jetty. Dựa trên những gì tôi đã thay đổi trong mã, tôi đoán bạn sẽ thêm các thông tin sau:

<Set name="ExcludeProtocols"> 
    <Array type="java.lang.String">    
     <Item>SSLv3</Item> 
    </Array> 
</Set> 

Cung cấp cho nó một shot và cho tôi biết nếu nó phù hợp với bạn.

+0

vui lòng cập nhật câu trả lời của bạn để nói rằng cấu hình này là dành cho SslContextFactory, và các công trình cho Jetty 7/8/9 (chỉ cần kiểm tra tất cả 3, và nó hoạt động) –

+0

Điều này làm việc, tôi chấp nhận câu trả lời này. Cảm ơn ! –

4

Mở rộng trên @ Lars câu trả lời ..

Đối Jetty 7, Jetty 8, và Jetty 9 bạn phải loại trừ các giao thức SSLv3 (không phải là mật mã) trên bất kỳ SslContextFactory bạn đang sử dụng để cấu hình cho SSL dựa Kết nối.

Đối với một phân phối Jetty

Sửa ${jetty.home}/etc/jetty-ssl.xml và thêm đoạn mã XML sau.

<Set name="ExcludeProtocols"> 
    <Array type="java.lang.String"> 
    <Item>SSLv3</Item> 
    </Array> 
</Set> 

Bên trong bất kỳ yếu tố quản lý một org.eclipse.jetty.http.ssl.SslContextFactory

Đối Jetty nhúng

Bất kỳ SslContextFactory bạn tạo/quản lý cho Connectors dựa SSL của bạn, bạn chỉ cần thiết lập các giao thức loại trừ.

SslContextFactory sslContextFactory = new SslContextFactory(); 
    sslContextFactory.addExcludeProtocols("SSLv3"); 
    sslContextFactory.setKeyStorePath(...); 
    ... 
+0

Tôi vẫn còn bị mắc kẹt với Jetty v6 (do vẫn đang được dựa trên Eclipse 3.7), làm thế nào để tôi làm điều này ở đó? sslContextFactory.addExcludeProtocols() không tồn tại ... – centic

+1

Jetty 6 không có hỗ trợ đó. Lấy làm tiếc. Bạn sẽ phải tạo SslSocketConnector của riêng mình. Xem câu trả lời của Karl về một câu hỏi khác đối với một số ví dụ codebase - http://stackoverflow.com/a/19937704/775715 - ngẫu nhiên, Jetty 6 đã trở lại EOL vào năm 2010, nó không có CÁC LỢI ÍCH VULNERABILITY kể từ đó. Poodle chỉ là 1 trong số hàng trăm lỗ hổng bị thiếu sót (nếu sử dụng Jetty trên Windows nhân với 3). Bạn nên nâng cấp hoặc không chạy Jetty 6 trên internet công cộng. –

+0

@centic Đây là lỗi bên Eclipse theo dõi việc nâng cấp bản thân Eclipse lên Jetty 9 - https: //bugs.eclipse.org/401784 –

0

Tôi đã cấu hình Jetty 8.1 whitsl ssl3. Bạn có thể xem cấu trúc đầy đủ của jetty-ssl.xml.

 

    <Configure id="Server" class="org.eclipse.jetty.server.Server"> 
     <Call name="addConnector"> 
     <Arg> 
      <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> 
      <Arg> 
       <New class="org.eclipse.jetty.http.ssl.SslContextFactory"> 
       <Set name="keyStore">... </Set>  
       <Set name="keyStorePassword">... </Set> 
       <Set name="keyManagerPassword">... </Set> 
       <Set name="trustStore">... </Set> 
       <Set name="trustStorePassword>... </Set 
       <Set name="ExcludeProtocols"> 
        <Array type="java.lang.String"> 
        <Item>SSLv3 </Item> 
        </Array> 
       </Set> 
       </New> 
      </Arg> 
      <Set name="port">... </Set> 
      <Set name="maxIdleTime">... </Set> 
      </New> 
     </Arg> 
     </Call> 
    </Configure> 

Các vấn đề liên quan