Articles of java

尝试访问HTTPS URL时,Domino 9中的Java CertificateException

当我们将Domino开发服务器从8.5.3升级到9时,从Java代码到具有GoDaddy证书的站点的HTTPS连接停止工作。 连接到具有DigiCert证书的服务器正常工作。 这在代理和XPage中都会发生。 这是一个XPage示例代码: <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:this.beforePageLoad> <![CDATA[#{javascript:new java.net.URL("https://www.sslshopper.com/").openStream();]]> </xp:this.beforePageLoad> </xp:view> 我也尝试过使用UrlConnection 。 这是一个例外: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: 3659 com.ibm.jsse2.oa(o.java:15) com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:460) com.ibm.jsse2.kb.a(kb.java:294) com.ibm.jsse2.kb.a(kb.java:533) com.ibm.jsse2.lb.a(lb.java:55) com.ibm.jsse2.lb.a(lb.java:581) com.ibm.jsse2.kb.s(kb.java:11) com.ibm.jsse2.kb.a(kb.java:394) com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44) com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496) com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528) com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505) com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83) com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31) sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184) com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40) java.net.URL.openStream(URL.java:1022) … java.security.cert.CertificateException: 3659 com.ibm.domino.napi.ssl.DominoX509TrustManager.checkServerTrusted(DominoX509TrustManager.java:98) com.ibm.jsse2.lb.a(lb.java:468) com.ibm.jsse2.lb.a(lb.java:581) com.ibm.jsse2.kb.s(kb.java:11) com.ibm.jsse2.kb.a(kb.java:394) com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44) com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496) com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528) com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505) com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83) com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31) sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184) com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40) java.net.URL.openStream(URL.java:1022) 我按照以下说明将GoDaddy证书导入到domino_path […]

在linux服务器上使用java访问受保护的windows文件夹

我们正试图在Linux服务器上安装一个安全的Windows共享,但是直到现在我们都无法做到这一点。 这是我们正在设置的设置: 运行Java应用程序的Linux服务器 一个windows共享,只允许某个安全组的成员进行读/写访问 Java应用程序应该能够将文件写入到Windows共享中 我被告知,因为我是一个Linux新手,我们应该安装该文件夹 当我们执行mount命令时,我们得到“29353:会话设置失败:ERRDOS – ERRnoaccess(拒绝访问)” 这可能意味着linux用户没有权限访问共享文件夹。 这是有道理的,因为linux用户不是AD用户。 所以这里真正的问题是,我们应该怎么做,以便我们可以访问由Linux用户运行的Java应用程序中的安全共享Windows文件夹? 装载是一个正确的解决scheme还是我们需要另一种方法。 非常感谢!

Amazon上的Load Balancer没有为Cookie设置安全标志

我们有一个在Amazon上运行的基于Java的应用程序,并且已经configuration我们的Amazon ELB以成功连接到它们。 但是,我们看到Cookie标记未设置为“安全”。 Name Value Domain Path Expires Secure AWSELB lkajsldf test.com / Session No 如何使cookie安全?

监视Tomcat-JDBC连接

我工作的公司销售一个运行在Tomcat上的java web应用程序。 我们遇到的主要问题是,tomcat容器无响应,需要重新启动,应用程序和数据库(Oracle或SQL Server)之间的连接变得不稳定。 我真的很想find一种方法来监视这两个应用程序的部分,并提醒我们,如果我们的任何生产基地宕机。 使用Nagios来监视Tomcat容器是很简单的。 问题是网站的首页将显示,但数据库连接将被打破。 用户将看到首页,然后能够login,然后看到失败。 我们希望在我们的客户之前开始抓住这些失败。 有人有任何解决办法吗? 我一直无法在网上find很多。 谢谢! 内特

Tomcat和Java没有监听IPv6

我们有一个运行Ubuntu 12.04 LTS,Tomcat 7和Oracle Java的networking服务器。 到目前为止,我们一直在端口80和443上提供IPv4地址的Web应用程序(80个redirect到443)。 我试图使通过IPv6也在同一端口上的Tomcat服务相同的应用程序。 OS正确configuration为IPv6,它具有自己的全球范围的IPv6地址。 不工作的是Tomcat / Java不监听IPv6。 这是netstat -tlpn的输出: tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 957/sshd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2686/java tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1058/postgres tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1243/master tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2686/java tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 2686/java […]

不能让tomcat提供TLS_ECDHE_ECDSA_ …密码

我的Tomcat(7.0.52)连接器被configuration为与密码列表等密码= “TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA” 所有这些都由安装在服务器上的openjdk1.7支持(已validation)。 keystore使用keytool初始化 keytool -genkey -alias Tomcat -keyalg RSA -sigalg SHA256withRSA -keysize 2048 … 在ssl握手debugging输出中,我可以看到客户端提供了这些密码,但服务器仅selectTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,这不是最强的: ClientHello, TLSv1.2Jul 04, 2014 2:38:31 PM org.apache.coyote.AbstractProtocol start Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,… Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1} Extension ec_point_formats, formats: [uncompressed] Unsupported extension type_35, data: Unsupported extension type_13172, data: Extension signature_algorithms, signature_algorithms: SHA256withRSA, SHA384withRSA, […]

哪些密码与Java 6 / Tomcat 7和IE8(XP)兼容?

我已经禁用了SSL3,并限制了可用的推荐集合的密码,但现在我无法使用Windows XP上的IE8访问我的服务器。 如果我允许所有的密码,那么我可以连接使用IE8,但是当我指定一个有限的密码集我不能。 在我看来,我需要添加正确的密码,然后IE8将正常工作。 当我启用所有密码并使用IE8访问站点时,我可以看到连接正在使用带有128位encryption和RSA的TLS 1.0,RC4: 我试着添加这个密码: TLS_RSA_WITH_RC4_128_SHA 。 但我不认为Tomcat / Java认可它。 我的连接器如下所示: <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" keystoreFile="C:\somewhere\my.keystore" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA" /> 我正在使用Tomcat 7和Java 6 这可能是一个红鲱鱼,但我一直指的是这些密码套件,因为我认为我受限于Java 6这些。此外,我一直指的是这个文件 (第30页)说,在XP支持IE8的密码。 不幸的是我找不到两组密码之间的匹配。 更新: 我的XP上的IE8浏览器似乎只支持这些密码套件: 我已经更新了Tomcat的密码以包含所有这些,但是我仍然无法连接: ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_RC4_128_MD5,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_DES_CBC_SHA,TLS_RSA_EXPORT1024_WITH_RC4_56_SHA,TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA,TLS_RSA_EXPORT_WITH_RC4_40_MD5,TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_DSS_WITH_DES_CBC_SHA,TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA" 我不知道为什么我可以连接所有启用的密码,但如果我指定浏览器支持的每个密码,我仍然无法连接

PostgreSQL 9.2导致CPU利用率达到100%

我们有一个带有Hibernate 4.3的Java EE应用程序(一个在线数字图书馆门户),它连接到一个PostGres 9.2数据库。 在负载175个并发用户的login和访问系统负载testing时,数据库服务器CPU利用率上升到100%,并保持这种状态。 数据库服务器的硬件是:4核心Pentium 2+ GHz处理器。 12 GB RAM Ubuntu连接池大小为200.应用程序服务器是运行在不同的4核心Pentium 2+ GHz处理器上的Apache Tomcat 6.x。 12 GB RAM的Ubuntu机器。 请帮忙! 急需解决这个问题。

Wildfly的部署顺序是什么?

我有大量的服务和一组核心的服务,预计首先加载,以便在其他服务加载时可用。 Wildfly在部署时是否具有特定的顺序(例如,根据文件名的字母顺序)? 或者有没有办法设置这个? 如果其他服务尚未就绪,我们尝试添加代码来重新尝试连接,但涉及到线程,有时线程没有在解除部署时正确终止。 有些事情不适合我: 在.ear里面可以控制模块(ejb's,war's等等)的部署顺序,但是我有兴趣控制.ear部署的顺序。 .ear可以被设置为另一个.ear的依赖项 ,但是我们的服务被部署在各个地区。 我们有serviceA-regionA-1.0.0.ear,serviceA-regionB-1.0.0.ear等等。要指定所有这些耳朵名称将是一个很大的痛苦。

使用VirtualHost访问Tomcat目录上的静态文件

我在我的AWS EC2 Linux实例上运行Tomcat 8上的Java webservice(JAX-WS),并且我有一个指向该服务的子域,以便我可以使用URL http://services.example.com/api/myService1调用服务http://services.example.com/api/myService1 。 这是VirtualHostconfiguration: <VirtualHost *:80> ServerName services.example.com ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/Services/ ProxyPassReverse / http://localhost:8080/Services/ </VirtualHost> 现在我想访问存储在服务器中的一些静态文件(图像)。 我应该在哪里存储它们,我应该如何访问它们? 我尝试将它们存储在/opt/tomcat/webapps/ROOT/example.jpg ,并将它们作为http://services.example.com/example.jpg调用,但它不起作用。