Kettle处理https请求

一、证书下载:

Kettle处理https请求_第1张图片
Kettle处理https请求_第2张图片

Kettle处理https请求_第3张图片
Kettle处理https请求_第4张图片
Kettle处理https请求_第5张图片
Kettle处理https请求_第6张图片
Kettle处理https请求_第7张图片

二、证书导入

注意:JAVA_HOME: C:\Java\jdk1.8.0_333

先cd到security目录下,再执行导入操作

密钥默认口令:changeit

C:\Java\jdk1.8.0_333\jre\lib\security>keytool -import -alias jkk -keystore cacerts -file D:\jkk_ssl.cer
输入密钥库口令:
所有者: O=Internet Widgits Pty Ltd, L=XIANYANG, ST=SHANXI, C=CN
发布者: O=Internet Widgits Pty Ltd, L=XIANYANG, ST=SHANXI, C=CN
序列号: 5f42e12562849f711a438985379eb01b1f915a71
生效时间: Sat Sep 03 17:08:44 CST 2022, 失效时间: Tue Aug 31 17:08:44 CST 2032
证书指纹:
         SHA1: 15:F6:C6:DE:1C:F7:01:D9:2F:8A:A6:27:55:B0:6C:24:03:6C:96:61
         SHA256: 88:CE:E5:E6:47:54:FC:08:21:33:0B:60:19:24:22:29:E3:90:57:B1:21:B6:4F:A3:15:14:1E:12:B1:74:6D:E3
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 1
是否信任此证书? [否]:  Y
证书已添加到密钥库中

C:\Java\jdk1.8.0_333\jre\lib\security>keytool -list -keystore cacerts -alias jkk
输入密钥库口令:
jkk, 2023-1-11, trustedCertEntry,
证书指纹 (SHA-256): 88:CE:E5:E6:47:54:FC:08:21:33:0B:60:19:24:22:29:E3:90:57:B1:21:B6:4F:A3:15:14:1E:12:B1:74:6D:E3

三、问题处理

Kettle处理https请求_第8张图片

运行,报如下错误:

javax.net.ssl.SSLException: Certificate subject for doesn't contain a common name and does not have alternative names

原因:

是在生成证书的时候没有设置Common Name即主域名,默认是空,请求的时候是IP地址请求

处理办法:

    修改httpclient-4.5.9源码:    

org.apache.http.conn.ssl.AbstractVerifier.java

 org.apache.http.conn.ssl.DefaultHostnameVerifier.java

AbstractVerifier.java

 
  public final void verify(String host, SSLSocket ssl) throws IOException
  {
    Args.notNull(host, "Host");
  }
  
  public final boolean verify(String host, SSLSession session)
  {
    return true;
  }
  
  public final void verify(String host, X509Certificate cert)
    throws SSLException
  {}

DefaultHostnameVerifier.java

public boolean verify(String host, SSLSession session)
{
    return true;
}
  
public void verify(String host, X509Certificate cert) throws SSLException
{}

static void matchCN(String host, String cn, PublicSuffixMatcher publicSuffixMatcher)
    throws SSLException
{}

把原包中的类替换掉,重新打包httpclient-4.5.9.jar,然后把新打包的jar文件放到: kettle目录下lib文件夹进行文件替换。

再次运行:成功。

Kettle处理https请求_第9张图片

下载: httpclient-4.5.9.jar

你可能感兴趣的:(java,http,网络协议,网络)