相关疑难解决方法(0)

如何将.cer证书导入java密钥库?

在开发Java Web服务客户端期间,我遇到了一个问题.Web服务的身份验证使用客户端证书,用户名和密码.我从webservice后面的公司收到的客户证书是.cer格式化的.当我使用文本编辑器检查文件时,它具有以下内容:

-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

我可以在Internet Explorer中将此文件作为证书导入(无需输入密码!)并使用它来通过Web服务进行身份验证.

通过首先剥离第一行和最后一行,转换为unix换行符并运行base64-decode,我能够将此证书导入密钥库.可以将生成的文件导入密钥库(使用该keytool命令).当我列出密钥库中的条目时,此条目属于该类型trustedCertEntry.由于此条目类型(?),我无法使用此证书对Web服务进行身份验证.我开始认为提供的证书是用于身份验证的公共证书...

我找到的解决方法是在IE中导入证书并将其导出为.pfx文件.此文件可以作为密钥库加载,并可用于对Web服务进行身份验证.但是,我不能指望我的客户每次收到新证书时都会执行这些步骤.所以我想将.cer文件直接加载到Java中.有什么想法吗?

附加信息:webservice背后的公司告诉我,应该从PC和用户那里请求证书(使用IE和网站),以便稍后导入证书.

java certificate keystore

208
推荐指数
7
解决办法
79万
查看次数

使用UnboundID SDK和SSL证书文件连接到Android应用程序中的LDAP服务器

我正在尝试在我的Android应用程序中建立与LDAP服务器的连接,并且正在使用UnboundID SDK.最近,从不安全的LDAP到安全的LDAP进行了更改,我必须相应地更改应用程序.我已获得SSL证书文件进行验证.我已经使用的文件,以使密钥库的描述在这里.我在我的应用程序的assets文件夹中有这个密钥库文件,并且从那里开始.下面的代码当前不起作用,并抛出异常:

LDAPException(resultCode = 01(connect error),errorMessage =('尝试连接到服务器时发生错误place.myserver.com:636:javax.net.ssl.SSLHandShakeException:java.security.cert.CertPathValidatorException:Trust anchor for未找到证书路径

// code from above link
AssetManager assetManager = getApplicationContext().getAssets();
InputStream keyStoreInputStream = assetManager.open("yourapp.store");
KeyStore trustStore = KeyStore.getInstance("BKS");
trustStore.load(keyStoreInputStream, "myPassword".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(trustStore);
// my code
SSLUtil sslUtil = new SSLUtil(tmf.getTrustManagers());
LDAPConnection connection = new LDAPConnection(sslUtil.createSSLSocketFactory());
connection.connect("place.myserver.com", 636);
Run Code Online (Sandbox Code Playgroud)

但是,代码段:

SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
LDAPConnection connection = new LDAPConnection(sslUtil.createSSLSocketFactory());
connection.connect("place.myserver.com", 636);
Run Code Online (Sandbox Code Playgroud)

确实有效(虽然我被高层人士告知,这将是不安全的).我不太清楚我在这里做错了什么,所以任何帮助都会受到赞赏.另外,如果有一个更好的方法来完成这个比我上面尝试做的更多,请随时告诉我:)我想坚持使用UnboundID库,因为其余的代码已经使用这也是,如果我使用TrustAllTrustManager一切正常.

ssl android ldap certificate unboundid-ldap-sdk

5
推荐指数
1
解决办法
2583
查看次数

标签 统计

certificate ×2

android ×1

java ×1

keystore ×1

ldap ×1

ssl ×1

unboundid-ldap-sdk ×1