1

The scenario is around calling an external SSL SOAP web service from within Mirth. The web service is requires an SSL/TLS connection along with a client certificate.

The intention is to use the built-in SOAP Sender Destination to call the remote secure web service, and somehow include that client certificate.

I understand that you first need to install that client certificate into the Java runtime. This may be within the Java runtime's certificate store or the Jetty certstore.

The platform:

  • Windows 2003 SP2
  • Mirth 1.8
  • Java jre1.5.0_09

Question: what configuration steps (Mirth, JRE certificate stores, etc.) would you suggest to successfully have a Mirth SOAP Sender include a client certificate (*.cer) when calling a web service secured by SSL?

4

3 回答 3

3

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

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

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

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

于 2009-06-02T16:21:24.097 回答
1

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

于 2009-11-11T15:46:47.983 回答
0

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

有关为配置 VM 设置哪些参数的详细信息,请参阅此问题

Java HTTPS 客户端证书认证

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

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

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

客户端 SSL 身份验证导致 IIS 出现 403.7 错误

于 2010-08-27T18:10:29.723 回答