【问题标题】:Mirth: calling an SSL SOAP web service with a client certificate欢乐:使用客户端证书调用 SSL SOAP Web 服务
【发布时间】:2010-10-30 17:41:08
【问题描述】:

该场景围绕从 Mirth 内部调用外部 SSL SOAP Web 服务。 Web 服务需要 SSL/TLS 连接以及客户端证书。

目的是使用内置的 SOAP Sender Destination 调用远程安全 Web 服务,并以某种方式包含该客户端证书。

我了解您首先需要将该客户端证书安装到 Java 运行时中。这可能在 Java 运行时的证书存储或 Jetty 证书存储中。

平台:

  • Windows 2003 SP2
  • 欢乐 1.8
  • Java jre1.5.0_09

问题:在调用受保护的 Web 服务时,您会建议哪些配置步骤(Mirth、JRE 证书存储等)成功让 Mirth SOAP Sender 包含客户端证书 (*.cer)通过 SSL?

【问题讨论】:

    标签: java web-services ssl client-certificates mirth


    【解决方案1】:

    如果设置了某些系统属性,Java 运行时,或者更具体地说,Sun JSSE 提供程序,将提供客户端证书。您可以在JSSE Reference Guide, 中阅读详细信息,但重要的属性是javax.net.ssl.keyStorejavax.net.ssl.keyStorePassword

    这种方法有一些缺点。首先,将密钥库密码设置为系统属性可以让在该进程中运行的任何代码都可以访问它——尽管如果安装了SecurityManager,则可以控制这一点。其次,这些设置将用于通过“默认”SSLContext 创建的任何 SSL 套接字。如果您需要针对不同端点使用不同的凭据,则需要 Mirth 特定的解决方案。

    问题中没有指定起点,但如果从头开始,最简单的方法是创建一个新的 Java Key Store(“JKS”格式)并生成一个新的密钥对和一个 CSR。将 CSR 发送到 CA 并取回证书后,将其导入同一密钥库。该密钥库可以使用了。

    如果证书已经可用,它很可能与对应的私钥一起存储在 PKCS #12 格式(.p12 或 .pfx 文件)中。这些可以由 Java 应用程序直接使用,但需要将 javax.net.ssl.keyStoreType 属性设置为 "PKCS12"

    【讨论】:

      【解决方案2】:

      Mirth 1.8 在调用 SOAP Web 服务时无法发送客户端证书。

      【讨论】:

        【解决方案3】:

        我在这里迟到了一点,但实际上它有可能。通过向 JVM 发送一些配置参数,您可以让底层 SOAP 引擎切换到 HTTPs 并提供正确的证书。

        请参阅此问题以获取有关配置 VM 需要设置哪些参数的详细信息

        Java HTTPS client certificate authentication

        您会注意到有很多事情需要处理。通常,一旦您正确配置了证书,HTTPs 和客户端身份验证应该“正常工作”。但是有些服务器对 B2B 风格的客户端不太友好,所以你必须小心。

        使用 JDK 6_21 并对证书进行一些调整,我能够让其中一个服务器正常运行,但对于我们来说,这需要大约 15 分钟才能在服务器上正确配置。

        这是解决这个问题的另一个问题(客户端身份验证对不友好的服务器)。

        Client SSL authentication causing 403.7 error from IIS

        【讨论】:

          猜你喜欢
          • 2014-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-06
          • 2019-01-05
          • 2020-10-23
          • 1970-01-01
          • 2015-10-20
          相关资源
          最近更新 更多