0

我有一台服务器,它使用自签名证书为我的测试客户端提供 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 显式初始化,所以客户端会拒绝服务器证书(这将是一个真正受信任的证书吗?)。

只是想知道我是否必须更改上面的代码并让我的测试人员更新他们的客户端应用程序,或者,连接是否会透明地工作而无需他们进行更新?

谢谢

- - - 跟进 - - -

我已经尝试过使用“真实”证书。我必须使用自签名证书的代码不起作用。因此,在他们使用真正的证书之前,我不得不在我的客户中删除上面的代码。

4

2 回答 2

0

如果客户端已接受自签名证书,则使用正确有效的可信证书将没有问题。

如果有问题,您仍然可以手动将新证书导入到您的trustedStore。您的代码不应该受到影响。

于 2013-02-22T15:25:01.987 回答
0

我相信现在您拥有适当的证书,您可以删除很多代码。事实上,DefaultHttpClient 现在应该可以工作了。

import org.apache.http.impl.client.DefaultHttpClient;

DefaultHttpClient client = new DefaultHttpClient();

您不再需要受信任的密钥库,因为第 3 方现在将成为您的受信任密钥库。DefaultHttpClient 应该自动执行此操作。

于 2013-02-22T15:26:05.477 回答