1 Star 0 Fork 0

花丢 / 网关管理

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
说明.MD 2.76 KB
一键复制 编辑 原始数据 按行查看 历史
花丢 提交于 2024-01-19 15:20 . 1.fix 优化显示

证书管理工具

keystore-explore

生成证书

  • CA
  • Server
  • Client

将服务端证书导入到JDK的 key store 中, 导入需要设置密码 建议设置与 *.pfx 相同的密码

JDK 默认密码changeit

# keytool -importcert -alias test.com -keystore "D:\.bin\Java1.8\jre-1.8\lib\security\cacerts" -file D:\.code\Cert.data\EIMS5.0\server_ca_.cer -trustcacerts
keytool -importcert -alias eims.0.com -keystore "C:\Program Files\Microsoft\JDK\jdk-17.0.7.7-hotspot\lib\security\cacerts" -file D:\.code\Cert.data\EIMS5.0\server_ca_.cer -trustcacerts

客户端测试链接


private final static String PFX_PATH = "D:/.code/Cert.data/EIMS5.0/client_ca_.pfx";
// 证书密码
private final static String PFX_PWD = "43124794"; //客户端证书密码及密钥库密码 changeit 43124794

public static String sslRequestGet(String url) throws Exception {
    KeyStore keyStore = KeyStore.getInstance("PKCS12");
    // 如果修改了 java 的keystore密码则需要提供密码, eims.0.com 为刚才导入时对证书起的别名
    // keyStore.getKey("eims.0.com", "changeit");
    InputStream instream = new FileInputStream(new File(PFX_PATH));
    try {
        // 这里就指的是KeyStore库的密码
        keyStore.load(instream, PFX_PWD.toCharArray());
    } finally {
        instream.close();
    }

    SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, PFX_PWD.toCharArray()).build();
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext
            , new String[] { "TLSv1", "TLSv1.2", "TLSv1.3" }  // supportedProtocols ,这里可以按需要设置
            , null  // supportedCipherSuites
            , SSLConnectionSocketFactory.getDefaultHostnameVerifier());

    CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
    try {
        String tk = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZXN0IiwiZXhwIjoxNzAzMTk3Nzc3fQ.dwaIn858tAc1uEMINQgAnIWgYZyPdc2Quil0TndcQ4U";
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("Content-type", "application/json");
        httpPost.addHeader("apiToken", tk);
        httpPost.addHeader("apiName", "test");
        HttpEntity body = new StringEntity("{name: 123808089808089809}");
        httpPost.setEntity(new StringEntity("{\"name\": 123808089808089809}"));
        CloseableHttpResponse response = httpclient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            // 返回结果
            String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
            EntityUtils.consume(entity);
            return jsonStr;
        
    } finally {
        response.close();
        httpclient.close();
        
    }
}

Java
1
https://gitee.com/Flose/api-gateway.git
git@gitee.com:Flose/api-gateway.git
Flose
api-gateway
网关管理
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891