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

JAVA-Android-Xác minh chứng chỉ X509 dựa trên chứng chỉ CA (Chứng chỉ nhà phát hành)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 21:05:06 27 4
mua khóa gpt4 Nike

Có thể đây là một câu hỏi trùng lặp, nhưng tôi chưa hiểu rõ câu hỏi trước đó, đó là lý do tại sao tôi đăng câu hỏi mới. Xin hãy nhìn vào điều này. Tôi sẽ đặt chứng chỉ Ca vào thư mục tài nguyên của mình để xác minh chứng chỉ ca được chứng nhận và sẽ có chứng chỉ ca tương tự trong máy chủ.

  1. Tôi đang tạo tệp .crt không có bất kỳ chữ ký chứng chỉ nào và gửi nó đến máy chủ.
  2. Máy chủ sẽ ký vào tệp .crt bằng chứng chỉ ca và gửi lại tệp cho tôi.
  3. Sau khi nhận được tệp crt đã ký, tôi cần xác minh nó bằng chứng chỉ ca đã có trong thư mục tài nguyên..

Tôi có thể tạo trình quản lý ủy thác bằng chứng chỉ ca của mình bằng mã sau:

Trình quản lý tài sản AssetManager = getResources().getAssets();
InputStream inputStream = null;

thử {
inputStream = assetsManager.open("Chứng chỉ của nhà phát hành");
nếu (inputStream != null)
} catch (IOException e) {
e.printStackTrace();
}
inputStream caInput = new BufferedInputStream(inputStream);
Chứng chỉ ca;
thử {
ca = cf.generateCertificate(caInput);
System.out.println("ca="
+ ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}
// Tạo KeyStore chứa các CA đáng tin cậy của chúng tôi
Chuỗi keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);

// Tạo TrustManager tin cậy các CA trong KeyStore của chúng tôi
Chuỗi tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();

TrustManagerFactory tmf = TrustManagerFactory
.getInstance(tmfAlgorithm);
tmf.init(keyStore);

Sau khi nhận được trình quản lý ủy thác này, tôi nên so sánh chứng chỉ crt mà tôi nhận được từ máy chủ như thế nào... Nghi ngờ của tôi: Tôi có cần tạo một trình quản lý ủy thác khác và so sánh bất kỳ tên nhà cung cấp nào trước khi tạo hai trình quản lý ủy thác này sau đó không? ? ? Nếu tôi sai, vui lòng cung cấp bất kỳ thông tin nào về quá trình này.

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

Chứng chỉ cuối cùng có thể được xác minh thông qua quy trình sau. Tôi hy vọng điều này sẽ giúp người khác ...

public void validCertificate() ném ngoại lệ {
thử {
Chuỗi nhà phát hànhCertPath = "Chứng chỉ nhà phát hành";
String certPath = "Chứng chỉ đã được cấp";
X509Nhà phát hành chứng chỉCert = getCertFromFile(issuerCertPath);
X509Certificate c1 = getCertFromFile(certPath);
Neo TrustAnchor = TrustAnchor mới (nhà phát hànhCert, null);
Đặt neo = Collections.singleton(anchor);
Chứng chỉFactory cf = Chứng chỉFactory.getInstance("X.509");
Danh sách danh sách = Arrays.asList(Chứng chỉ mới[] { c1 });
Đường dẫn CertPath = cf.generateCertPath(list);
Thông số PKIXParameters = new PKIXParameters(neo);
params.setRevocationEnabled(false);
Trình xác thực CertPathValidator = CertPathValidator.getInstance("PKIX");
Kết quả PKIXCertPathValidatorResult = trình xác thực (PKIXCertPathValidatorResult)
.validate(đường dẫn, thông số);
//Nếu như
// không
// có hiệu lực
// sẽ
// ném
System.out.println("HỢP LỆ");
} catch (Exception e) {
System.out.println("NGOẠI TRỪ " + e.getMessage());
e.printStackTrace();
}
}

riêng tư X509Certificate getCertFromFile(String path) ném Ngoại lệ {
Trình quản lý tài sản AssetManager = MyActivity.this.getResources().getAssets();
InputStream inputStream = null;
thử {
inputStream = assetsManager.open(path);
} catch (IOException e) {
e.printStackTrace();
}
inputStream caInput = new BufferedInputStream(inputStream);
X509Chứng chỉ chứng chỉ = null;
Chứng chỉFactory cf = Chứng chỉFactory.getInstance("X509");
cert = (X509Certificate) cf.generateCertificate(caInput);
cert.getSerialNumber();
trả lại chứng chỉ;
}

Về JAVA-Android - xác minh chứng chỉ X509 dựa trên chứng chỉ CA (chứng chỉ nhà phát hành), 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/18822516/

27 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