2015-12-09 11 views
7

Uygulamamızın üçüncü bir tarafı, güvenlik düzeyi protokollerinde yakın zamanda değişiklikler yaptı. Kısacası, My Axis istemcisinin TLSv1.1 veya TLSv1.2 kullanarak çağrı göndermesi gerekiyor. bazı iyi fikirler, bu ilgili diğer mesajları gördük:TLSv1.2 protokolünü kullanmak için bir Axis İstemcisi nasıl uygulanır

  1. here
  2. here.

kodunda bu değişiklikleri yaptıktan sonra, ben gönderilen paketi izlemek için Kesme Aracı kullanmış yine aramaları tetiklemiş ve hala kullanılmakta olan protokol TLSv1 olan SSL tabakasında bakın.

the packet snippet

yanlış burada ne işim var?

MyTLSSocketSecureFactory oysa
AxisProperties.setProperty("axis.socketSecureFactory", MyTLSSocketSecureFactory.class.getName()); 

geçerli::

public class MyTLSSocketSecureFactory extends JSSESocketFactory { 
    public MyTLSSocketSecureFactory(Hashtable attributes) { 
     super(attributes); 
    } 

    @Override 
    public Socket create(String host,int port, StringBuffer otherHeaders,BooleanHolder useFullURL) 
       throws Exception{ 
     Socket s = super.create(host, port, otherHeaders, useFullURL); 
     ((SSLSocket)s).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"}); 
     return s; 
    } 
} 

, sayesinde herhangi bir yorum gerçekten takdir ediyorum

bu benim yeni SocketSecureFactory oluşturma şekilleridir.

+0

değiştirebilirsiniz: initFactory() yöntemi ve benzeri bazı şeyleri

geçersiz kılma Sunucu, önceki gece önceden haber vermeksizin sadece TLS 1.1 veya 1.2 bağlantı kabul etmeye başladı. JDK 6 u 35, Axis 1.4 kullanıyorum. Aşağıda açıklanan çözüm ile denedim ama hiçbir fark yaratmıyor, tshark hala TLSv1 ile çıktığımı söylüyor: TLSv1 75 Alert (Seviye: Önemli, Açıklama: Handshake Failure) – Sergiu

cevap

5

MyTLSSocketSecureFactory sınıfınızda kendi SSLContext örneğini oluşturmanız ve ardından sslFactory'yi bağlamdan almanız gerekir. 3. Alt taraf -

initFactory() { 
    SSLContext context = SSLContext.getInstance("TLSv1.2"); 
    context.init(null, null, null); 
    sslFactory = context.getSocketFactory(); 
} 
+0

Bu iyi çalışıyor. Sadece SSLContext.getInstance ("TSLv1.2") değiştirmeniz gerekir; TLS'ye "TSL" .. – Krozen

0

Ayrıca sadece varsayılan SSLContext Ben aynı sorunu yaşıyorum

SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); 
    sslContext.init(null, null, null); 
    SSLContext.setDefault(sslContext); 
İlgili konular