如何在Domino Web Service Consumer中使用TLS和SHA-2证书

时间:2014-10-20 14:34:08

标签: web-services lotus-domino

与其他许多人一样,我们也被IBM Domino中缺乏TLS和SHA-2支持所困扰。

我们的应用程序严重依赖于使用需要使用证书进行身份验证的Web服务。直到上周,一切正常。然后,其中一个提供者开始请求SHA-2证书进行身份验证,另一个提供者开始请求TLS而不是SSS v3。

我们当前的解决方案使用Java Web使用者,类似于:

ServiceBinding stub = new ServiceLocator().getWebService(portAddress);
stub.setSSLOptions(PortTypeBase.NOTES_SSL_SEND_CLIENT_CERT + PortTypeBase.NOTES_SSL_ACCEPT_SITE_CERTS);

证书保存在服务器的密钥环中。

我们如何在Domino Web使用者中使用SHA-2证书和TLS?

我尝试在Java truststore / keystore中导入证书并使用如下代码:

System.setProperty("javax.net.ssl.keyStore", "/path/to/keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "pwd);
System.setProperty("javax.net.ssl.trustStore", "/path/to/truststore");
System.setProperty("javax.net.ssl.trustStorePassword", "pwd");
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");

但它似乎没有用。我仍在调试代码以找到确切的原因。

但是如何处理TLS?可以使用Apache / Nginx作为Web服务身份验证的某种代理吗?

或者我们唯一的选择是将Web服务使用者编写为独立的Java应用程序并从Notes中调用它们吗?

谢谢,

纱纱

3 个答案:

答案 0 :(得分:2)

我们能够通过使用Apache反向代理解决SHA-2和TLS问题。我们首先尝试使用转发代理,但它没有用。

在工作解决方案中,我们的Domino Web服务使用者首先使用SSL联系Apache反向代理,但没有任何身份验证。然后Apache使用Domino之前使用的证书联系Web服务提供商。

在Apache和Web服务提供商完成握手和身份验证之后,Domino中的Web服务使用者可以免费使用它。

事实证明,设置相当容易。你需要一台Apache服务器(显然),我们将它们安装在CentOS虚拟机中。

您需要做的配置非常简单,如下所示:

<VirtualHost *:8443>
    # Turn off forward proxy
    ProxyRequests Off

    # Communication with Domino is using SSL, so we need SSL support   
    SSLEngine On
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    # This is necessary for authentication to work.
    SSLProxyEngine On
    # This is Domino certificate including private key saved as unecrypted pem file.
    SSLProxyMachineCertificateFile /etc/httpd/certs/domino-cert.pem
    # This is list of CA certificates necessary to authenticate the provider.
    SSLProxyCACertificateFile /etc/httpd/certs/provider-cert.pem

    # Redirection rules are in this case very simple - redirect everything that comes
    # to the proxy to the web service provider address.
    ProxyPass / https://ws.provider.com/
    ProxyPassReverse / https://ws.provider.com/

    # Allow only connections from Intranet.
    <Proxy *>
        Order deny,allow
        Deny from all
        Allow from 172.20.20.0/24
    </Proxy>
</VirtualHost>

这里只提几件事:

  • 您应该能够使用Apache默认安装的证书和密钥,因为它们仅用于保护Domino和代理之间的通信。
  • Domino密钥和证书必须采用未加密的pem格式。如有必要,使用openssl进行转换。如果您收到有关丢失或加密私钥的错误消息,请打开您的pem证书并确认其中包含{strong> RSA-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----。 openssl有时会在没有RSA的情况下生成证书,然后Apache将无法使用它。

Apache配置到此结束。唯一剩下的就是修改Web服务使用者 - 在代码中找到设置端点地址的行,例如 https://ws.provider.com/ws/getTemperature 并将其更改为 https://proxy.mycompany.com:8443/ws/getTemperature

就是这样。我们现在有了使用Domino Web服务以及TLS和SHA-2证书的工作解决方案。我们可以冷静地等待IBM在Domino中实现对此的支持。

答案 1 :(得分:0)

SHA2有效但Windows和Unix的TLS使用提示 我想在Poodle TLS的上下文中,SHA-2并不重要,但无论如何,这里是如何让SHA-2在没有IBM HTTP的情况下使用Domino 9。 http://www.infoware.com/?p=1592 只有SHA-2才能解决TLS问题。 对于Windows使用IHS集成 对于unix,请查看此链接http://blog.darrenduke.net/darren/ddbz.nsf/dx/here-is-a-freely-available-vm-to-reverse-proxy-domino-shoot-the-poodle.htm

此致 垫

答案 2 :(得分:-1)

您可以避免更改地址以使用其他端口。

我解决这个问题的方法是使用随Domino 9 Server安装的IBM HTTP Server(IHS)(您必须从Custom安装屏幕中选择IBM HTTP Server)。 IHS是Apache的一个版本,带有Domino HTTP处理程序。您可以在IHS / Apache服务器上安装TLS证书,并在运行时代理Domino服务器。因此,您甚至不必更改网址。

以下是IBM的一些说明:

http://www-01.ibm.com/support/docview.wss?uid=swg27039743&aid=1

它向您展示了如何使用IKEYMAN创建签名请求(CSR)并将证书存储在Domino中。

在domino \ ihs \ conf \ domino.conf 文件中,通过取消注释以下行并编辑VirtualHost节点进行编辑:

# IPv4 support:
Listen 0.0.0.0:80
# Uncomment the following line for IPv6 support on Windows XP or Windows
# 2003 or later. Windows IPv6 networking must be configured first.
# Listen [::]:80
...
Listen 0.0.0.0:443
## IPv6 support:
#Listen [::]:443

#default vhost for Domino HTTP:
<VirtualHost *:80>
  ServerName "${DOMINO_SERVER_NAME}"
  DocumentRoot "${DOMINO_DOCUMENT_ROOT}"      
</VirtualHost> 

<VirtualHost *:443>
  ServerName "${DOMINO_SERVER_NAME}"
  DocumentRoot "${DOMINO_DOCUMENT_ROOT}"
  SSLEnable
  #SSLProtocolDisable SSLv2
  #SSLProtocolDisable SSLv3
</VirtualHost>
KeyFile d:/keys/myserver.kdb
SSLDisable
#

在完成所有domino.conf修改后,请记得向notes.ini添加HTTPIHSEnabled=1。然后在Domino启动期间观察Domino控制台是否存在因domino.conf而导致的任何错误。您还可以将HTTPIHSDebugStartup=1添加到notes.ini以在HTTP IHS启动期间获取一些调试信息。