Apache Commons HttpClient kitaplığı (sürüm 3.1), sunucu sertifikasının güvenilen olarak belirlenemediğini (javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
atılan istisna tarafından kanıtlandığı gibi) görmezden gelmeye çalışıyorum.Apache Commons HttpClient 3.1 nasıl HTTPS sertifikası geçersizliğini dikkate almaz?
Ben Make a connection to a HTTPS server from Java and ignore the validity of the security certificate yanı sıra Disable Certificate Validation in Java SSL Connections, buldunuz ama ilk kabul cevap birisi aynı iki farklı sürümü nasıl kullanılacağı yönünde beni işaret edebilir sürece, HttpClient 4,0 (ne yazık ki yükseltemezsiniz içindir Aynı proje içindeki kütüphane), another answer with little more than a dead link that supposedly went to a 3.x solution olmasına rağmen. İkinci sayfadaki kodun, biraz ayarlanmış bir sürümünü kullandığımda hiç bir etkisi yok gibi görünüyor (temel olarak, anonim olanları satır içi kullanarak değil de eski moda sınıfları ilan ederek, SSL
'a ek olarak TLS
örnek kodda olduğu gibi varsayılan HTTPS soket fabrikası için SSL
'u kullanarak). (Ve/veya sınıfları ilgili) herhangi HttpClient
örneği başka servlet çalışan (değil benim servlet kodu içinde yaratılan bu yüzden
Tercihen, ben parçacığı/örnek çapında olan bir şeyi istiyorum Aynı kapsayıcı), lax sertifikası doğrulama mantığını kullanacaktır, ancak bu noktada, kendinden imzalı sertifikayı geçerli olarak kabul ettiği sürece herhangi bir şey yapacağı gibi hissetmeye başlıyorum.
Evet, güvenlik etkilerinin olduğunu biliyorum, ancak buna neden ihtiyacımın tek nedeni test amaçlıdır. Buradaki fikir, normalde güvenilmeyen sertifikaların güvenilir olup olmadığını denetleyen bir yapılandırma seçeneği uygulamak ve varsayılan olarak "güvenilir olmayan sunucu sertifikalarına güvenme" bölümünde bırakmaktır. Böylelikle, geliştirme aşamasında kolayca açılıp kapatılabilir, ancak üretimde bunu yapmak yoldan çıkmayı gerektirir.
Evet, 3.1 uyguladığınız Protokol yapıcısını kullanımdan kaldırmış ve görünüşte HttpConnection # setProtocol yöntemine sahip değildir. Yazık, umut verici görünüyordu. :( –
Kurucu ayrıca 3.0.1'de kullanımdan kaldırıldı;) Apache kaynak deposu 'HttpConnection''a göre 3.1'de hala bir“ setProtocol ”yöntemi var: http://svn.apache.org/viewvc/httpcomponents/oac.hc3x /tags/HTTPCLIENT_3_1/src/java/org/apache/commons/httpclient/HttpConnection.java?view=markup – Gandalf
Fabrika, yalnızca bir yayın niteliğindeki "ProtocolSocketFactory" e dönüştürülebilir ve bu nedenle kullanımdan kaldırılan yapıcıyı kaldırırlarsa gerekli değildir Daha sonra, şu anda kullanılmayan kullanım sorumlusu kullanıyor, gönderimi güncelleyeceğim. – Gandalf