企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建

企业落地项目 — 中铁局一体化平台SSL CFCA证书环境搭建

引言

最近博主和其他小伙伴跟导师一块开发中铁局一体化平台项目,该项目主要的目的是从中铁局测试环境平台请求接口返回的json数据,然后对json进行转换,并存入本地数据库,要保证本地数据库与中铁局测试环境平台的数据一致,简单来说,就是中铁局数据发生改变,本地也要发生改变。

问题

在请求中铁局一体化平台Hr测试系统接口时,编辑器报了一个错,如下:

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

该错的大致意思就是请求时缺少SSL证书,jdk环境不支持,那么该怎么办呢,中铁局一体化平台那边提供的Hr测试平台该怎么测试数据呢,下面我来慢慢道来。

SSL证书

SSL证书是 数字证书 的一种,类似于驾驶证、护照和营业执照的电子副本。 因为配置在服务器上,也称为SSL服务器证书。 SSL 证书 [1] 就是遵守 SSL协议 ,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。 SSL证书通过在客户端浏览器和 Web服务器 之间建立一条SSL安全通道(Secure socket layer (SSL)安全协议是由Netscape Communication公司设计开发。

SSL的重要性

  1. 加密用户浏览器和web服务器之间的通讯数据。
  2. 验证web网站的身份

为什么要用SSL证书

因为SSL证书在目前企业项目开发中,都采用SSL证书来进行网络间的通信及数据传输,用的人多,自然要用

使用SSL证书的好处

  1. 提高了数据之间的安全性
  2. 防止中间人流量劫持
  3. Https加密使网站更安全
  4. 保障用户隐私信息安全
  5. 帮助用户识别钓鱼网站
  6. http将被标记“不安全”
  7. 提升搜索排名
  8. 提升公司形象和可信度

SSL可以解决什么问题?

机密性问题:防止网上交易时黑客盜走客户的银行卡,帐号等机密信息。

完整性问题:防止非法恶意篡改客户的银行卡号等个人信息。

真实身份认证:验证网站的真实性,树立可信赖的企业形象,辨别钓鱼网站。

交易不可否认:保证每笔交易都有可靠的记录

提高搜索排名顺序,数据推荐参考,为SEo的目标和网站增强了安全系数

申请国产CFCA SSL证书

打开网址:中国金融认证中心CFCA证书
打开如下界面

企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第1张图片
点击下载专区
企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第2张图片
申请即可获取证书

解决问题

在开篇,博主标记了一个小错误,如下:

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

这个问题如何解决?

Java配置SSL证书环境

将ca.cer、root.cer文件拷贝到java环境中的security目录:
企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第3张图片

打开cmd窗口,进入到java环境中的security目录:

企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第4张图片

执行以下命令将ca.cer导入到cacerts文件中:

keytool -import -alias ca -keystore cacerts -storepass changeit -trustcacerts -file ca.cer

企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第5张图片

企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第6张图片

执行命令将root.cer导入到cacerts文件中:

keytool -import -alias root -keystore cacerts -storepass changeit -trustcacerts -file root.cer

企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第7张图片

测试调用接口

访问接口,获取Hr系统的所有二级单位集合,获取后为JSON串,经过工具类转换,将JSON字符串映射至实体类,映射必须前,JSON串中的键必须与实体类字段名对应。

经过以下转换,将JSON串转为对象集合

PbJsonUtils工具类

public static List toList(String jsonStr,Class clz){
     
    GsonBuilder gb=new GsonBuilder();
    Type type1 = new ParameterizedTypeImpl(clz);
    return (List) gb.enableComplexMapKeySerialization().create().fromJson(jsonStr, type1);
}

class ParameterizedTypeImpl implements ParameterizedType {
     
    Class clazz;

    public ParameterizedTypeImpl(Class clz) {
     
        clazz = clz;
    }
    @Override
    public Type[] getActualTypeArguments() {
     
        //返回实际类型组成的数据
        return new Type[]{
     clazz};
    }
    @Override
    public Type getRawType() {
     
        //返回原生类型,即HashMap
        return List.class;
    }
    @Override
    public Type getOwnerType() {
     
        //返回Type对象
        return null;
    }
}

调用接口成功,如下:

企业落地项目 --- 中铁局一体化平台SSL CFCA证书环境搭建_第8张图片

至此,问题完美解决,接下来就是要将拿到的数据存入本地数据库,并实时与Hr测试平台系统数据更新,上方改变本地变,需要及时改变数据。

SSL证书是项目中一个比较重要的技术点,使用它,大大提升了系统的安全性与可维护性。

如果你觉得博主写的不错的话,不妨给博主个鼓励,一键三连(点赞,关注,评论)吧~

你可能感兴趣的:(企业项目落地实战,ssl,https,服务器)