• 使用Keytool为JDK添加https证书信任


    在浏览器中访问https是件挺方便的事,与访问http站点相比,也就是地址栏上多个“s”。但是,在java平台上访问https,可就麻烦多了。Java虚拟机并不直接使用操作系统的key ring,而是有自己的security manager。与操作系统类似,jdk的security manager默认有一堆的根证书信任。如果你的https站点证书是花钱申请的,被这些根证书所信任,那使用java来访问此https站点会非常方便。但假如,你的https证书是自己签名的,就需要将证书导入至JDK的信任证书中,否则访问时会报SSL错误。假如,你的webserice是基于https来进行访问,而此站点证书是自签名类型的,那么部署时一定要使用keytool进行证书导入,否则无法正常访问。

    JDK keystore存放路径

    默认在 $JAVA_HOME/jre/lib/security/cacerts 在我的Mountaion Lion中,存放路径为:

    /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security/cacerts

    keystore的默认密码

    “changeit”

    有人说OS X中java的 Keystore密码被更改成了: “changeme”。所以如果你用上面那个访问失败,可以试试这个。

    keytool乱码

    keytool在OS X中经常显示为乱码,它在中文OS X中输出GB2312编码,所以要将terminal的默认编码更改成GB2312或者中文(ECU)。

    Snip20120805 3

    导入证书

      1. 首先,先通过浏览器将证书下载下来,点击显示证书详细的时候,直接将图标拖动到桌面上即可。

    Snip20120805 2

      1. 通过keytool命令来导入证书,注意导入时需要管理员权限,所以命令前面要加sudo。不知道这个在win7系统上是不是也要如此。

    Snip20120805 6

      1. 最后通过keytool list显示信任的证书,通过MD5值验证一下证书是否导入成功。

    Snip20120805 7

    最后: KeyTool命令详解

    又及:

      证书的cn(常用名称)需要和访问地址相一致,不然,仍然可能报错。所以,往往需要根据cn名称在hosts文件中为访问的ip地址添加域名解析。以gmail的证书为例:

    再及:

    XMLRpc上介绍了一种方法,通过自定义一个TrustManager来对所有的站点都进行信任来实现调用自签名的https webService。我试了半天不知为何没有成功。

  • 相关阅读:
    一个好用的H5tab切换(抽屉功能)
    jQuery的ajax请求
    原生js的ajax请求
    微信小程序封装get、post请求
    微信小程序 data数据的赋值和取值
    gitLab更新文件命令
    vue中localStorage的使用
    linux就该这么学--课程第15天
    linux就该这么学--课程第14天
    linux就该这么学--课程第13天
  • 原文地址:https://www.cnblogs.com/wupher/p/2623561.html
Copyright © 2020-2023  润新知