)
准备材料
1.证书的 cert.pem 文件
2.key文件
3.key的密钥
证书处理步骤
这里只显示 liunx 命令 ,windows 的同学可自查
合并客户端证书 pem 和 key 到一个 pem 中
cat xxx.cert.pem xxx.key > xxx.fullchain.pem
生成PKCS12 的 keystore
openssl pkcs12 -export -in xxx.fullchain.pem -out xxx.fullchain.p12 -name xxx-cert -noiter -nomaciter
这个命令会提示输入3次密码 ,第一次输入xxx.key的密码 ,
第二次提示输入导出密码 自己设就行 ,这里用 changeit
注意: 第一次 不是自己设的 需要用 key文件的密钥
转换 .p12 文件为 .jks 格式
这里会用 上一步骤的导出密码 这里用 changeit
keytool -importkeystore -srckeystore xxx.fullchain.p12 -srcstoretype pkcs12 -srcalias xxx-cert -srcstorepass changeit -destkeystore xxx.jks -deststoretype jks -deststorepass changeit -destalias xxx-cert -destkeypass changeit
获取服务器证书
echo -n | openssl s_client -connect baidu.com:443 -servername baidu.com -key xxx.key -cert xxx.cert.pem | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee "server.crt"
导入服务器证书 server 到客户端的 truststore 里
为了简便,这里客户端的truststore也用之前的xxx.jks,所有密码都用changeit,当然也可以用一个专属的keystore文件。
但 要注意 ,如果这个服务器没有导入过证书 ,用别的服务器生成的jks 可能会导致证书无效 , 需要在新服务器重新生成
keytool -import -alias servercert -file server.crt -keypass changeit -keystore xxx.jks -storepass changeit
上述 步骤 结束后 会得到 xxx.jks 文件 方便java 请求
下面送上 java 用证书调用http请求代码
pom 依赖
pom依赖文章来源:https://www.toymoban.com/news/detail-737725.html
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
</dependency>
</dependencies>
测试接口调用的代码
代码送了 工具类就不送了 自己生成一个就行 ,实在不行的留言文章来源地址https://www.toymoban.com/news/detail-737725.html
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
public class TestApple {
public static void main(String args[]) throws UnrecoverableKeyException, CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException {
String url = "https://baidu.com";
String jskPath = "E:\\test\\apple\\xxx.jks";
SSLContext sslContext = SSLContextBuilder.create()
.loadKeyMaterial(new File(jskPath),"changeit".toCharArray(),"changeit".toCharArray())
.loadTrustMaterial(new File(jskPath),"changeit".toCharArray()).build();
HttpClient client = HttpClients.custom().setSslcontext(sslContext).build();
String result = null;
HttpGet httpGet = new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
httpGet.setConfig(requestConfig);
try {
HttpResponse response = null;
try {
response = client.execute(httpGet);
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity entity = response.getEntity();
try {
result = EntityUtils.toString(entity, "UTF-8");
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
// logger.error(e);
}
} finally {
httpGet.abort();
}
}
}
到了这里,关于双向SSL认证证书 生成 jks 步骤, java用jks 发送http请求 方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!