xforms - 使用 Orbeon Forms,为什么我使用自签名证书向服务器提交失败?

标签 xforms orbeon

当通过 HTTPS 对使用自签名证书的服务器运行提交 ( <xforms:submission> ) 时,我在日志中收到如下异常:

ERROR XFormsServer  - XForms - submission - xforms-submit-error throwable: sun.security.provider.certpath.SunCertPathBuilderException 
: unable to find valid certification path to requested target 
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174) 
        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238) 
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280) 
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191) 

我该如何解决这个问题?

最佳答案

当发出 HTTPS 请求时,Java 会检查服务器的证书。由于证书是自签名的,Java 无法验证它是否是合法证书,因此会出现错误消息“无法找到请求目标的有效证书路径”。

您需要做的是:

  1. 使用“真实”证书(例如由 Verisign 签名)。
  2. 将服务器的证书添加到“信任存储”,并使用该信任存储设置应用程序服务器的 JVM。

执行上述第 2 步的具体步骤取决于您的环境,但本质上是:

  1. 如果处理请求的服务器在 Java key 存储中拥有其自签名 key ,请将其导出。这里 your-server 是您的服务器 key 存储的别名,mykey.cer 是您正在创建的文件,keystore 是您的 key 存储文件,your-password 是您的 key 存储的密码。

    keytool -export -alias your-server -file mykey.cer -keystore keystore -storepass your-password

  2. 在运行 Orbeon Forms 的服务器(即发起 HTTPS 请求的服务器)上,将 mykey.cer 导入信任存储区。这里的 truststore 是您的信任存储文件,如果您没有现有的信任存储,它可能是您正在创建的新文件。

    keytool -import -v -trustcacerts -alias your-server -file mykey.cer -keystore truststore -storepass your-password

  3. 在启动运行应用程序服务器(例如 Tomcat)和 Orbeon Forms 的 VM 时添加以下 -D 参数:

    -Djavax.net.ssl.trustStore=path/to/your/truststore -Djavax.net.ssl.trustStorePassword=您的密码

关于xforms - 使用 Orbeon Forms,为什么我使用自签名证书向服务器提交失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980946/

相关文章:

templates - 如何使用 Orbeon Forms 3.9 在 Form Builder 中创建重复字段?

xls - ODK、Formhub、Enketo pulldata 命令

html - 我在哪里可以找到免费的 xform 编辑器?

postgresql - Orbeon Forms Postgres 数据库连接

java - 使用 Orbeon xforms 提交将内容发布到 MarkLogic 时出现 "java.net.SocketException: Connection reset"错误

xslt - 如何向所有子节点插入属性

mysql - 将数据从 MySQL 迁移到 Orbeon Forms 中的 eXist

character-encoding - 使用 Orbeon 指定查询字符串的字符编码

orbeon - 在 Orbeon xform 中,如何在输入字段中更改下拉菜单时获取选定的下拉标签

javascript - 从 XForms 操作调用 javascript