2

我做了以下步骤,但它抛出异常:

1.我在windows server 2003上安装了openam 10.0.0。

2.在同一台windows服务器机器上配置tomcat和ssl。

3.配置正确,openam url可以通过https访问。

4.在另一台机器上安装了openam客户端sdk,它是ubuntu机器,我试图从那个ubuntu机器登录到openam服务器

        AuthContext lc = new AuthContext("/","https://server.ensarm.com:8443/openam/namingservice");
        AuthContext.IndexType indexType = AuthContext.IndexType.MODULE_INSTANCE;
        lc.login(indexType, "DataStore");
        return lc;

但我得到以下异常:

ERROR: Naming service connection failed for https://server.ensarm.com:8443/openam/namingservice
com.iplanet.services.comm.client.SendRequestException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我不明白可能是什么问题。是因为我的 java 密钥库(ssl 配置需要)在 windows 服务器机器上,而我在 ubuntu 机器上没有密钥库,

或者

需要将密钥库导入 ubuntu 机器。?? 请任何人都可以帮助我摆脱这种情况。

4

1 回答 1

9

“<em>javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:”</em> 这意味着服务器没有来自授权 CA 的有效证书。

您正面临此异常,因为您尝试通过 SSL (https) 进行连接。您需要将服务器证书导入 JRE KeyStore。

执行以下步骤来解决它:

获取证书:在浏览器中输入 URL(例如https://server.ensarm.com:8443/openam/namingservice )。

  1. 您现在可能会看到一个对话框,警告您有关证书的信息。现在单击“查看证书”并安装证书。忽略任何警告消息。
  2. 下一步是安装导出证书并将其安装在 jre 密钥库中。使用 keytool 证书管理实用程序执行此 http://download.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html 。
  3. 导出证书:转到工具->“Internet 选项”->内容->证书。打开证书后,在“受信任的根证书颁发机构”下找到刚刚安装的证书。选择正确的证书并单击“导出”。您现在可以将其保存(DER 编码的二进制文件),例如 mycert.cer。
  4. 转到 JRE\BIN 并使用 keytool -import 命令将文件导入您的 cacerts 密钥库。例如 keytool --import -alias MYCA -keystore ..\lib\security\cacerts -file c:\mycert.cer。输入密钥库密码:(默认为“changeit”)。在提示中输入“yes”。
  5. 运行命令 keytool -list -keystore ..\lib\security\cacerts 。您现在将看到所有证书的列表,包括您刚刚添加的证书。
于 2012-09-24T10:19:27.573 回答