与其他许多人一样,我们也被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中调用它们吗?
谢谢,
纱纱
答案 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>
这里只提几件事:
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启动期间获取一些调试信息。