通过bouncycastle wiki页面,我能够理解如何创建X.509根证书和认证请求,但我不太明白如何在此之后继续进行概念和编程.
让我们假设甲方做了一个证书请求,并从CA获得了他的客户证书.某些乙方如何验证A的证书?A需要什么样的证书?根证书?"普通"客户证书?
如果我们假设A已成功将他的证书以DER或PEM格式发送给B,那么验证如何在编程级别上工作?
任何帮助深表感谢.
最诚挚的问候,Rob
可以说我有这样的东西(客户端代码):
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
SSLContext sslc = SSLContext.getInstance("TLS");
sslc.init(null, trustAllCerts, null);
SocketFactory sf = sslc.getSocketFactory();
SSLSocket s = (SSLSocket) sf.createSocket("127.0.0.1", 9124);
Run Code Online (Sandbox Code Playgroud)
这段代码功能齐全,但我真的无法弄清楚,如何根据我在pem文件中提供的一个具体CA证书来验证服务器的证书.
所有证书都由我的自签名CA签名,它是我需要验证的CA(仅针对此证书).
每个答案都表示赞赏.
编辑:
回应jglouie(非常感谢你这样做 - 不能投票给你答案).
我创立了解决方案:
new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) 是否有任何java库使我们能够找到p12证书是否是正确的Apple推送证书?
我使用X509Certificate类来检查其有效性,但没有找到有关证书类型的任何信息.
我正在开发一个Android应用程序,只有当服务器具有CA颁发的特定证书(例如:GoDaddy)时才需要进行SSL握手.我在Android开发者网站上引用了这些文档,但它只是说验证一个不受Android信任的自签名证书或证书.在我的情况下,我应该获得客户端证书并将其添加到我的密钥库.我正在使用apache HttpClient为我的网络服务请求.任何帮助深表感谢.
根据安全扫描程序的结果,我需要限制应用程序信任的证书颁发机构。
扫描结果指出 处的线webView.loadUrl("https://example.com/page");。我看到了如何创建一个使用我的 TrustManager 的 SslSocketFactory,但我在 WebView 中没有看到允许我设置它的 API。
https://developer.android.com/training/articles/security-ssl.html#UnknownCa
有哪些可能的方法来实现这一目标?
java ×3
android ×2
ca ×2
ssl ×2
x509 ×2
bouncycastle ×1
certificate ×1
ios ×1
iphone ×1
validation ×1