cuốn sách gpt4 ai đã làm

Làm cách nào để tạo một ứng dụng ODK Android (có mã nguồn mà tôi không thể sửa đổi) tin cậy vào chứng chỉ giả từ localhost?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 14:57:15 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi đang phát triển một ứng dụng web được truy cập bởi ứng dụng ODK Android ( https://opendatakit.org/ ). Công việc tôi đang làm yêu cầu kết nối https. Tuy nhiên, ODK trả lại javax.net.ssl.SSLPeerUnverifiedException. Làm cách nào để tạo được sự tin tưởng kỳ lạ với localhost Kết nối SSL?

câu trả lời hay nhất

Thêm mã này để tin cậy tất cả các chứng chỉ -

import java.io.IOException;
import java.net.Socket;
nhập java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

nhập org.apache.http.conn.ssl.SSLSocketFactory;
lớp công khai MySSLSocketFactory mở rộng SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");

công khai MySSLSocketFactory(KeyStore Truststore) ném NoSuchAlgorithmException, KeyManagerException, KeyStoreException, UnrecoverableKeyException {
siêu (cửa hàng tin cậy);

TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) ném Chứng chỉ ngoại lệ {
}

public void checkServerTrusted(X509Certificate[] chain, String authType) ném Chứng chỉ ngoại lệ {
}

công khai X509Certificate[] getAcceptedIssuers() {
return null;
}
};

sslContext.init(null, new TrustManager[] { tm }, null);
}

@Ghi đè
public Socket createSocket(Socket socket, String Host, int port, boolean autoClose) ném IOException, UnknownHostException {
trả về sslContext.getSocketFactory().createSocket(socket, Host, port, autoClose);
}

@Ghi đè
Ổ cắm công cộng createSocket() ném IOException {
trả về sslContext.getSocketFactory().createSocket();
}
}

và sử dụng phương pháp này để nhận HTTPClient -

HttpClient getNewHttpClient công khai() {
thử {
KeyStore TrustStore = KeyStore.getInstance(KeyStore.getDefaultType());
TrustStore.load(null, null);

SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

Thông số HttpParams = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

Sổ đăng ký Đề án đăng ký = Đề án mớiRegistry();
register.register(Lược đồ mới("http", PlainSocketFactory.getSocketFactory(), 80));
register.register(Lược đồ mới("https", sf, 443));

ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, register);

trả về DefaultHttpClient mới (ccm, thông số);
} catch (Exception e) {
trả về DefaultHttpClient mới();
}
}

Điều này sẽ tin tưởng tất cả các chứng chỉ.

chúc mừng :)

Làm cách nào để tạo một ứng dụng ODK Android (có mã nguồn mà tôi không thể sửa đổi) tin cậy vào chứng chỉ giả từ localhost? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/27706853/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress