对于java来说,我有点像菜鸟。所以,我需要得到所有帮助。 有没有办法让以下功能像Java一样工作?
curl --cert public_cert.pem --key privateKeyNOPASS.key --cacert CAchain.pem https://abc.webapp.com
我想知道是否可以仅使用手边的证书(命令中提到的证书)在Java中完成此操作
TIA
答案 0 :(得分:0)
是的,根据您是仅要使用JDK还是乐于使用像OkHttp这样的库,将会有很多不同的示例来实现这一点。需要一些装配。
这是一个使用自定义CA证书和客户端身份验证的OkHttp单元测试
public OkHttpClient buildClient(HeldCertificate cert, HeldCertificate... chain) {
SslClient.Builder sslClientBuilder = new SslClient.Builder()
.addTrustedCertificate(serverRootCa.certificate);
if (cert != null) {
sslClientBuilder.certificateChain(cert, chain);
}
SslClient sslClient = sslClientBuilder.build();
return defaultClient().newBuilder()
.sslSocketFactory(sslClient.socketFactory, sslClient.trustManager)
.build();
}
我有一个OSX的java + OkHttp客户端,它支持这个功能,所以你可以在那里选择代码,或运行该命令行在Mac上进行测试。注:它假设您已使用JDK keytool将密钥加载到密钥库中。
$ brew install yschimke/tap/oksocial
$ oksocial --help
--cert <serverCerts>
Use given server cert (Root CA)
--clientauth
Use Client Authentication (from keystore)
--keystore <keystoreFile>
Keystore
加载证书和构建OkHttpClient的大部分代码都在这里
https://github.com/yschimke/oksocial/blob/master/src/main/java/com/baulsupp/oksocial/security/CertificateUtils.java https://github.com/yschimke/oksocial/blob/master/src/main/java/com/baulsupp/oksocial/security/KeystoreUtils.java