该场景围绕着从Mirth中调用外部SSL SOAP Web服务。 Web服务需要SSL / TLS连接以及客户端证书。
目的是使用内置的SOAP Sender Destination来调用远程安全Web服务,并以某种方式包含该客户端证书。
我知道您首先需要将该客户端证书安装到Java运行时中。这可能位于Java运行时的证书存储区或Jetty certstore中。
平台:
问题:当您调用Web服务时,您建议成功拥有Mirth SOAP Sender的配置步骤(Mirth,JRE证书存储等)包括客户端证书(* .cer)通过SSL?
答案 0 :(得分:3)
如果设置了某些系统属性,Java运行时,或更具体地说,Sun JSSE提供程序将显示客户端证书。您可以在JSSE Reference Guide,中阅读详细信息,但重要的属性为javax.net.ssl.keyStore
和javax.net.ssl.keyStorePassword
。
这种方法有一些缺点。首先,将密钥库密码设置为系统属性使其可以访问在该进程中运行的任何代码 - 尽管如果安装了SecurityManager
,则可以对其进行控制。其次,这些设置将用于通过“默认”SSLContext
创建的任何SSL套接字。如果您需要不同端点的不同凭据,则需要特定于Mirth的解决方案。
问题中未指定起点,但如果从头开始,最简单的方法是创建新的Java密钥库(“JKS”格式)并生成新的密钥对和CSR。将CSR发送到CA并获取证书后,将其导入同一个密钥库。该密钥库已准备好使用。
如果证书已经可用,则可能与PKCS#12格式(.p12或.pfx文件)中的相应私钥一起存储。这些可以由Java应用程序直接使用,但javax.net.ssl.keyStoreType
属性需要设置为"PKCS12"
答案 1 :(得分:1)
在调用SOAP Web服务时,Mirth 1.8无法发送客户端证书。
答案 2 :(得分:0)
我迟到了一点,但实际上有可能。通过向JVM发送一些配置参数,您可以使底层SOAP引擎切换到HTTP并提供适当的证书。
有关配置VM的参数的详细信息,请参阅此问题
Java HTTPS client certificate authentication
你会注意到有很多事情要照顾。通常,一旦您正确配置了证书,HTTP和客户端身份验证就应该“正常工作”。但是有一些服务器对B2B风格的客户不太友好,所以你必须要小心。使用JDK 6_21并对证书进行了一些调整,我能够让其中一台服务器运行起来,但是我们这边需要大约15分钟才能在服务器上正确配置。
这是解决这个问题的另一个问题(客户端认证对不友好的服务器)。