我在JavaRMI应用程序中的SSL握手开始时遇到了一些问题。
我的应用程序与标准 RMI 套接字配合良好,但如果按照本指南将默认套接字更改为 SSL 套接字,则无法完成握手:https://blogs.oracle.com/lmalventosa/entry/using_the_ssl_tls_based
因此,我将可激活服务器的构造函数从
public MyActivatableServer(ActivationID id, MarshalledObject<MyType> obj)
throws RemoteException
{
// Some code ...
// int port = ...
// Other code ...
Activatable.exportObject(this, id, port);
}
到
public MyActivatableServer(ActivationID id, MarshalledObject<MyType> obj)
throws RemoteException
{
// Some code ...
// int port = ...
// Other code ...
Activatable.exportObject(this, id, port, new SslRMIClientSocketFactory(),
new SslRMIServerSocketFactory());
}
然后,我按照以下指南创建了一个密钥库和一个信任库:http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#CreateKeystore
此时,在服务器端,我有以下文件:
我在客户端复制了信任和user.cer。
最后,我将这些属性添加到启动可激活服务器的JVM中:
在客户机JVM上,我添加了:
这是ssl debug的完整输出:http://pastebin.com/sxbLhTnF
我不明白为什么客户端会在“ClientHello”之后收到警报:
*** ClientHello, TLSv1
RandomCookie: GMT: 1410959810 bytes = { 20, 172, 181, 158, 246, 172, 183, 30, 232, 42, 80, 36, 77, 5, 67, 56, 30, 191, 170, 142, 14, 2, 113, 241, 183, 154, 213, 24 }
Session ID: {}
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods: { 0 }
Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}
Extension ec_point_formats, formats: [uncompressed]
***
main, WRITE: TLSv1 Handshake, length = 149
main, READ: TLSv1 Alert, length = 2
main, RECV TLSv1 ALERT: fatal, handshake_failure
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
最后,我将这些属性添加到启动可激活服务器的JVM中:
-Djavax.net.ssl.keyStore=keystore
-Djavax.net.ssl.keyStorePassword=password
您需要在安装程序的< code>ActivationGroupDesc中定义这些属性。
我们有一个应用程序,它将一些xml数据发布到另一个应用程序,并通过ApacheWeb服务器(版本2.2.26)反向代理传输流量。我们观察到一些零星的代理错误(http响应代码500)-删除服务器的SSL握手错误。错误消息显示在apache web服务器错误日志中。 早些时候,我们使用sunOne网络服务器,我们没有注意到这个错误。我怀疑可能是apache网络服务器上的一些缺失配置导致了这个问题。这
我正在尝试使用SSL证书将java客户端与JMX服务器连接。 但是不幸的是,这个连接给出了一个SSL握手错误。当我尝试使用< code >-DJ avax . net . debug = all 标志对此进行调试时,我在java客户端上得到以下错误消息。 2016-07-15T13:29:50.02-0700[APP/0]退出RMI更新清洁-[10.200.0.27:44445,javax.rmi
笔记: 最初我试图从使用如下代码 代码1: 错误: 在谷歌搜索之后,我发现您已经使用了SSL验证,使用适配器会话可以解决这个问题。但我仍然有错误,请找到下面的代码和错误 代码2: 错误:
我们有一个SSL问题,我是99%,这不是你通常的证书信任商店旋转木马。 我们有一个Weblogic服务器试图通过LDAPS与Active Directory建立SSL连接,底层SSL实现是JSSE。 有时,它是有效的。通常在重新启动Weblogic后的几个小时内。 之后,我们开始得到SSL握手错误,与SSL调试打开我们看到: [ACTIVE]ExecuteThread:'10'用于队列:'webl
堆栈:React,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误: 在浏览器:当React调用Django API(当然在请求头中有)时,大约30秒后在浏览器控制台出现CORS错误。 在浏览器控制台:CORS策略阻止从源“https://mydomain”访问“https://mydomain:8000/somethy/”处的XMLHttpRe
> 客户端发送带有密码套件中包含的密码的“Client Hello”消息。 在server.xml中,这些密码都不出现。以下是catalina的条目: 连接器port=“4443”sslenabled=“true”acceptcount=“20000”maxthreads=“5000”allowtrace=“false”scheme=“https”secure=“true”clientauth=“