Centos 和 Windows Java httpClient 链接https的地址怎样巧妙地导入SSL证书,并访问接口

最近项目中对接一些接口.有些接口链接还是带https的. 但是并不是所有的https的都可以访问.需要SSL证书. 但是对象一般不会给SSL证书.这时候需要我们自己去拉取证书,添加我们的JVM的白名单.

第一 拉取SSL证书方法

通过火狐浏览器拉取, 注意访问此https证书的时候如图:


点击那个锁.然后点击安全连接.查看详情


查看更多信息
查看证书
下载PEM证书.IE的话可以导出crt文件.用base64位导出
保存或者另存为
在下载目录中.直接修改后缀名位crt

然后点击windows的运行,输入CMD.(linux直接执行就行)

第一步: 进入证书所在目录.

cd ....

第二步: 执行下面命令. 由于Java默认的导入库的密码是: changeit

#windows

keytool -import -alias 给证书取个名字[注意不要重复了] -file 你的证书.crt -keystore "%JAVA_HOME%/jre/lib/security/cacerts"  -storepass changeit -trustcacerts

#linux

keytool -import -alias 给证书取个名字[注意不要重复了]-file 你的证书.crt -keystore /usr/local/jdk1.8.0_151/jre/lib/security/cacerts  -storepass changeit -trustcacerts

第三步: 重启服务.

注意:因为是静态加载,所以要重新启动你的Web Server,证书才能生效。

下面给出怎样调用HTTPS的接口的代码:

InputStream inStream =null;

try {

HttpClient client =new HttpClient();

client.getState().setCredentials(AuthScope.ANY_HOST,"223.87.15.163",  //此处随意给一个服务器IP地址

new UsernamePasswordCredentials("cacerts","changeit"));

GetMethod get =new GetMethod(oldFilePath);

get.setDoAuthentication(true );

int status = client.executeMethod( get );

logger.info("调用下载录音获取状态:{}",status);

inStream  = get.getResponseBodyAsStream();

}catch (IOException e) {

logger.error("IO流读取异常:",e);

}catch (Exception e) {

logger.error("震鸿获取录音功能异常:",e);

}finally {

try {

if(inStream !=null) {

inStream.close();

}

}catch (IOException e) {

logger.error("关闭流异常",e);

}

}

你可能感兴趣的:(Centos 和 Windows Java httpClient 链接https的地址怎样巧妙地导入SSL证书,并访问接口)