我有一台服务器使用自签名证书来为我的测试客户端提供https连接。
我的客户端应用程序是用java编写的,我接受了这样的自签名证书:
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
SSLSocketFactory factory = new SSLSocketFactory(myTrustedStore);
DefaultHttpClient client = new DefaultHttpClient();
client.getConnectionManager().getSchemeRegistry()
.register(new Scheme("https", factory, 456));
现在我有一个来自受信任的第三方提供商的正确的ssl证书。
如果我交换证书,上面的连接会失败吗?因为我使用上面的SSLSocketFactory显式初始化,客户端是否会拒绝服务器证书(这将是一个真正值得信赖的证书?)。
只是想知道我是否必须更改上面的代码并让我的测试人员更新他们的客户端应用程序,或者,连接是否会透明地工作而不必更新?
由于
-----跟进------
我尝试过'真正的'证书。我必须使用自签名证书的代码不起作用。因此,在使用真正的证书之前,我不得不在客户端删除上面的代码。
答案 0 :(得分:0)
如果客户已接受自签名证书,则使用可正确验证的可信证书将毫无问题。
如果出现问题,您仍可以手动将新证书导入您的trustedStore。你的代码不应该受到影响。
答案 1 :(得分:0)
我相信现在你有一个合适的证书,你可以删除很多代码。实际上,DefaultHttpClient现在应该可以工作。
import org.apache.http.impl.client.DefaultHttpClient;
DefaultHttpClient client = new DefaultHttpClient();
您不再需要受信任的密钥库,因为第三方现在将成为您信任的密钥库。 DefaultHttpClient应该自动执行此操作。