Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengendalikan Sijil SSL Tidak Sah dengan Apache HttpClient?

Linda Hamilton
Lepaskan: 2024-11-06 08:34:02
asal
936 orang telah melayarinya

How to Handle Invalid SSL Certificates with Apache HttpClient?

Mengendalikan Sijil SSL Tidak Sah dengan Apache HttpClient

Apabila mewujudkan sambungan HTTP selamat melalui SSL menggunakan Apache HttpClient, anda mungkin menghadapi ralat yang menunjukkan tidak sah Sijil SSL. Ralat ini berlaku apabila pelayan jauh membentangkan sijil yang tidak dipercayai oleh set pengurus amanah Java.

Penyelesaian Kemungkinan:

Untuk menyelesaikan isu ini, terdapat beberapa pendekatan anda boleh mengambil:

  1. Konfigurasikan SSLContext dengan TrustManager yang Menerima:
    Buat TrustManager tersuai yang menerima sebarang sijil, tanpa mengira kesahihannya. Pendekatan ini tidak disyorkan untuk persekitaran pengeluaran, kerana ia menjejaskan keselamatan sambungan SSL.

    <code class="java">// Configure SSLContext with a TrustManager that accepts any certificate
    SSLContext ctx = SSLContext.getInstance("TLS");
    ctx.init(null, new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
    SSLContext.setDefault(ctx);</code>
    Salin selepas log masuk
  2. Konfigurasikan SSLContext dengan Kedai Amanah yang Betul:
    Dapatkan yang dipercayai sijil daripada pelayan jauh dan mengimportnya ke kedai amanah. Kemudian, konfigurasikan SSLContext untuk menggunakan kedai amanah ini.
  3. Tambah Sijil pada Gedung Amanah Lalai:
    Import sijil untuk pelayan jauh ke dalam gedung amanah Java lalai, sama ada secara manual atau melalui alat seperti alat kunci.

Contoh Kod:

Sampel kod berikut menunjukkan cara mencipta SSLContext yang menerima sebarang sijil, seperti yang dicadangkan dalam penyelesaian pertama :

<code class="java">import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSLTest {
    
    public static void main(String [] args) throws Exception {
        // configure the SSLContext with a TrustManager
        SSLContext ctx = SSLContext.getInstance("TLS");
        ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
        SSLContext.setDefault(ctx);

        URL url = new URL("https://remote-server-address");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setHostnameVerifier(HostnameVerifier.ALL); // temporarily disable strict hostname verification
        System.out.println(conn.getResponseCode());
        conn.disconnect();
    }
    
    private static class DefaultTrustManager implements X509TrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}

        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    }
}</code>
Salin selepas log masuk

Nota: Ingat bahawa menggunakan TrustManager yang menerima seperti ini hanya perlu dipertimbangkan untuk tujuan ujian dan penyahpepijatan dan tidak boleh digunakan dalam persekitaran pengeluaran.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Sijil SSL Tidak Sah dengan Apache HttpClient?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!