Java 如何使用jersey客户端使用https RestFul Web服务

Java 如何使用jersey客户端使用https RestFul Web服务,java,web-services,rest,Java,Web Services,Rest,问题:我想使用jersey客户端使用HTTPS Restful Web服务 1我从第三方获得了CARoot证书并安装在浏览器Mozilla上,我能够从Mozilla浏览器上的RestClient访问这些服务 我是佩姆 ii SubCA-Client.pem iii abc_SDLLKL_p12.pfx 2我想使用jersey客户端在JAVA代码中配置此Web服务 3在java代码中配置这些证书需要执行哪些步骤 4我不想在本地JRE中配置这些 PAttributes pd = new PAttri

问题:我想使用jersey客户端使用HTTPS Restful Web服务

1我从第三方获得了CARoot证书并安装在浏览器Mozilla上,我能够从Mozilla浏览器上的RestClient访问这些服务

我是佩姆 ii SubCA-Client.pem iii abc_SDLLKL_p12.pfx

2我想使用jersey客户端在JAVA代码中配置此Web服务

3在java代码中配置这些证书需要执行哪些步骤

4我不想在本地JRE中配置这些

PAttributes pd = new PAttributes();
            ClassLoader classLoader = pd.getClass().getClassLoader();
            File file = new File(classLoader.getResource("cacerts").getFile());
            System.setProperty("javax.net.ssl.trustStore",file.getAbsolutePath());
            System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
            Client client = Client.create();
            WebResource webResource = client.resource("https://xyz/abc/getAttributes");
            String input = new PAttributes().getRequestBody();
            ClientResponse clientResponse = webResource.accept("application/xml").type("application/xml").post(ClientResponse.class, input);
            String output = clientResponse.getEntity(String.class);
            System.out.println("output"+output);

我已经从浏览器下载了.crt文件,需要配置,不知道如何配置?

在java安装文件夹中有一个名为cacerts的文件。这是JRE的密钥库或信任库。它包含JRE信任的所有证书。您可以从信任库添加/删除证书。 要轻松添加/删除证书,可以使用GUI程序

选项1使用密钥库资源管理器和默认信任库

使用密钥库资源管理器打开信任库。 信任库应位于/lib/security/cacerts下,默认密码应为changeit或changeme

将.crt文件拖放到密钥库资源管理器中打开的信任库中

单击导入并保存信任库

现在,您的JRE安装已准备好使用Web服务

选项2使用密钥库资源管理器和单独的信任库

将默认信任库复制到项目中。默认信任的路径是:/lib/security/cacerts

使用密钥库资源管理器打开复制的信任库。 默认密码应为changeit或changeme

将.crt文件拖放到密钥库资源管理器中打开的信任库中

使用以下VM参数启动程序:

-Djavax.net.ssl.trustStore[复制的信任库的路径] -Djavax.net.ssl.trustStorePassword[信任商店密码]

选项3使用2个信任库默认+单独的信任库


如果你想为网站使用默认的信任库和一个单独的信任库,请参阅本文

我不知道如何做到这一点,我有两个.crt文件'RootCA.crt'和SubCA-Client.crt,将这些文件放在何处以及如何配置为Java代码。你使用的是Linux还是Windows?我使用的是Windows 10操作系统。我是SSL证书的新手。我编辑了anwnser以获得更好的抗误读能力。在尝试第二种方法时遇到以下异常。com.sun.jersey.api.client.clienthandler异常:javax.net.ssl.sslhandler异常:在com.sun.jersey.client.urlconnection.urlconnection.URLConnectionClientHandler.java:151 at com.sun.jersey.api.client.client.handleClient.java:648 atcom.sun.jersey.api.client.WebResource.handleWebResource.java:680在com.sun.jersey.api.client.WebResource.access$200WebResource.java:74在com.sun.jersey.api.client.WebResource$Builder.postWebResource.java:568