Tôi đã tạo một kho ủy thác có chứng chỉ và kho khóa có khóa riêng. Tôi đã đặt đoạn mã sau, tải trình quản lý trsustore và trình quản lý kho khóa, sau đó tạo một phiên bản của ngữ cảnh SSL.
Bất cứ khi nào tôi đưa ra yêu cầu đối với dịch vụ web, mã bên dưới sẽ được gọi. Chúng tôi đang sử dụng API axis2.
Bối cảnh SSLContext = SSLContext.getInstance(protocolVersion);
context.init(keyManagers, TrustManagers, null);
SSLSocketFactory socketFactory = context.getSocketFactory();
SslContextedSecureProtocolSocketFactory safeProtocolSocketFactory = new SslContextedSecureProtocolSocketFactory(context);
Giao thức authhttps = Giao thức mới ("https", safeProtocolSocketFactory, port);
HttpClient httpclient = HttpClient mới();
httpclient.getHostConfiguration().setHost(tên máy chủ, cổng, authhttps);
GetMethod httpget = new GetMethod("/RTAPService/RTAPService");
Cũng đã thử GetMethod httpget = new GetMethod("/");
httpclient.executeMethod(httpget);
Nó cho tôi lỗi sau ..
org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: Xây dựng đường dẫn PKIX không thành công: sun.security.provider.certpath.SunCertPathBuilderException: không thể tìm thấy đường dẫn chứng nhận hợp lệ tới mục tiêu được yêu cầu
Tên máy chủ là "qartap.csnet.assurity.sg" và URL dịch vụ web của tôi là "https://qartap.csnet.assurity.sg:8443/RTAPService/RTAPService”
Vấn đề là khi tôi đăng ký giao thức "HTTPS", nó ảnh hưởng đến toàn bộ ứng dụng của tôi, bằng cách nào đó tôi có thể chỉ đặt những giao thức này cho một máy chủ cụ thể hoặc một dịch vụ web cụ thể không...? ? ?
Hoặc tôi muốn thiết lập nó với tên máy chủ hoặc tự tạo một giao thức mới... Tôi đã thử giải pháp đây phương thức được đưa ra trong . Nhưng nó mang lại cho tôi ngoại lệ sau ..
Khi chuyển URl dịch vụ web tới hàm tạo sơ khai được tạo, tôi đã thay thế "HTTPS" trong url bằng "myHTTPS" tùy chỉnh của mình.
Hệ thống không thể suy ra thông tin truyền tải từ URL myhttps://serverUrl:7001/app/services/RTAPDevService.RTAPDevServiceHttpSoap12Endpoint/.
Tôi là một lập trình viên xuất sắc, rất giỏi!