【发布时间】:2013-09-03 04:43:42
【问题描述】:
我正在使用以下方法在 java 和 android 应用程序中实现 SSL 认证,但在许多帖子中我发现它不安全,仅适用于测试目的。那么有人可以给我一个关于在生产环境中实施 SSL 认证的例子吗?
TrustStrategy easyStrategy = new TrustStrategy() {
@Override
public boolean isTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
// eh, why not?
return true;
}
};
SchemeRegistry schemeRegistry = new SchemeRegistry();
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, null, null);
SSLSocketFactory ssf = new SSLSocketFactory(easyStrategy);
ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
更新:当我通过网络浏览器连接到服务器时,我发现我尝试访问的服务器正在颁发自签名证书。这是我得到的 openssl 输出:
verify error:num=18:self signed certificate
它还提供了一个冗长的代码,它表示服务器证书。我可以用它来创建我自己的证书并在我的应用程序中使用它吗?
【问题讨论】:
-
我想要一个解决方案,不仅适用于 android,还适用于桌面应用程序和 android。这似乎是它我会看一遍,让你知道。谢谢你:)
-
这不是“实施 SSL 认证”。这只是接受任何旧证书。这是根本不安全的。请定义您的实际问题。不管是什么,除了测试目的之外,这不是一个可接受的解决方案,在我看来,即便如此。
-
@EJP 是的,我发现它的方式不安全。我想向 Web 服务器发出 HTTP 重新请求。据我了解,它发布了自己的认证。所以我不知道在我的应用程序中使用它的方法。所以我使用上述方法进行测试。现在我需要知道一种在我的应用程序中进行 SSL 认证的安全方法。
-
将证书导入您的信任库。