Tag: ssl

在httpclient.execute中的HttpClientConnectionOperator.connect时忽略套接字读取超时

下面是jstack的输出,看线程,nid = 0x771d(30493)。 几个小时前就开始了。 “taskScheduler-6” prio=10 tid=0x00007f4479e07800 nid=0x771d runnable [0x00007f446e63a000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at sun.security.ssl.InputRecord.readFully(InputRecord.java:442) at sun.security.ssl.InputRecord.readV3Record(InputRecord.java:554) at sun.security.ssl.InputRecord.read(InputRecord.java:509) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934) – locked (a java.lang.Object) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) – locked (a java.lang.Object) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory .java:275) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java: 254) at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:1 23) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionMa nager.java:318) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) […]

有没有办法从2路ssl连接中的java代码恢复客户端证书的通用名称?

我们有一个weblogic服务器,配置为在与客户端建立与Web服务解决方案的ssl连接时需要客户端证书。 ssl握手完美地工作,因为我们已经配置了所需的全部内容。 现在,在连接之后我们收到一个soap请求,其中客户端ID是此请求soap的字段之一。 我们需要做的是检查此id与用于在我们的服务器内连接的客户端证书的通用名称,以保证交易。 这对我们来说非常重要,因为这是银行交易,涉及很多钱,我们需要避免欺诈。 那么:有没有办法恢复用于使用weblogic 10.3.3服务器从服务器上运行的java代码建立双向ssl连接的客户端证书的通用名称? []中

如何在Java中使用“多个”SSL证书?

我有一个应用程序同时与多个主机通信。 在这种情况下,我需要使用多个密钥库来与其他主机建立通信。 在这种情况下,设置系统属性“javax.net.ssl.keyStore”是有问题的。 我找到了一篇很好的讨论问题的post 。 那么解决这个问题的最佳方法是什么?

即使在SpringMVC中包含密钥库证书后,也无法对服务器进行身份validation

我正在尝试对jira服务器进行身份validation并从服务器获取问题详细信息,这里我最初手动给出id。 我已经下载了服务器证书并使用keytool导入,密码是“密码”到密钥库。 但我无法在下面validation它是我的代码 我的java代码: @Controller public class Service{ @RequestMapping(“/hello”) public String Data(ModelMap model) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, KeyManagementException, UnrecoverableKeyException{ KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(new FileInputStream(“/users/crohitk/Documents/workspace/frr/publicKey1.store”), “password”.toCharArray()); SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory( new SSLContextBuilder() .loadTrustMaterial(null, new TrustSelfSignedStrategy()) .loadKeyMaterial(keyStore, “password”.toCharArray()).build()); HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build(); ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory( httpClient); RestTemplate restTemplate = new RestTemplate(requestFactory); […]

不支持的密码套件TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

我最近收到了Commodo的证书,我正在尝试将它与我的Scala Spray Server集成。 我有一个特性来配置我的Spray服务器: import java.io.{BufferedInputStream, FileInputStream} import java.security.{SecureRandom, KeyStore} import java.security.cert.{X509Certificate, CertificateFactory} import javax.net.ssl.{TrustManagerFactory, KeyManagerFactory, SSLContext} import spray.io._ import org.apache.camel.util.jsse._ // for SSL support (if enabled in application.conf) trait MySSLConfig { // if there is no SSLContext in scope implicitly the HttpServer uses the default SSLContext, // since we want non-default settings in this […]

相互认证Android和Tomcat

我想为我的应用和服务器进行相互认证。 我按照这一步: 1)创建证书。 和服务器tomcat的密钥库(tomcat.keystore) 2)创建证书。 为客户 3)导入客户端证书。 进入服务器密钥库 4)为Android创建一个bks密钥库(smartssl.bks) 5)导入证书。 服务器和客户端进入密钥库Android 现在我配置Tomcat: 在Android应用程序中,我使用Volley框架: InputStream keyStore = getResources().openRawResource(R.raw.smartssl); // Usually getting the request queue shall be in singleton like in {@see Act_SimpleRequest} // Current approach is used just for brevity RequestQueue queue = Volley .newRequestQueue(Act_SsSslHttpClient.this, new ExtHttpClientStack(new SslHttpClient(keyStore, “pass”, 443))); StringRequest myReq = new StringRequest(Method.GET, “https://192.168.1.4:8443/REST/app/generali/getA”, […]

将证书添加到Java信任库和Sslhandshake

我将带有Java程序的http请求(使用HttpUrlConnection)发送到网站并从那里下载文件。 该网站是“https”并使用证书。 当我尝试运行我的代码时,它会例外: cause javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 我尝试使用我的浏览器(Mozilla)访问此网站。当我检查证书时,有三个证书。该站点包含这些证书。 DigiCert高保证EV根CA. -DigiCert High Assurance CA-3 -companycert(由DigiCert High Assurance CA-3发布) 我用keytool检查我的trustsroe。 信任库仅具有根CA. 是否足够或我必须导入另外2个证书? 或者只是 – 公司? 将中间证书添加到java信任库有什么风险? 我必须这样做吗? 任何人都可以帮忙吗?

得到此错误:“javax.net.ssl.SSLHandshakeException:没有共同的密码套件”

我有一个用C#编写的客户端和JAVA中的服务器。 因此,当我尝试连接时,我在服务器javax.net.ssl.SSLHandshakeException: no cipher suites in common出现错误javax.net.ssl.SSLHandshakeException: no cipher suites in common和C#“EOF或0字节”。 [C#]: TcpClient tc = new TcpClient(server, 1337); using (sslStream = new SslStream(tc.GetStream())){ } [JAVA]: SSLServerSocketFactory ssocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); SSLServerSocket server = (SSLServerSocket) ssocketFactory.createServerSocket(1337); server.setEnabledCipherSuites(server.getEnabledCipherSuites()); 和JAVA推出属性: -Djavax.net.ssl.trustStore=Certificatename -Djavax.net.ssl.trustStorePassword=thereisapw -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -Djavax.net.debug=ssl TCPServer

使用https的async-http-client的CertificateException

几天前我开始使用async-http-client访问https://ws.plimus.com/时遇到问题。 我得到一个“常规SSLEngine问题”消息,并在堆栈跟踪中我可以看到它是由 java.security.cert.CertificateException: Certificates does not conform to algorithm constraints 这个SO问题描述的基本相同。 在java.security中注释掉该行会使错误消失,但我认为有充分的理由禁用MD2。 使用拉曼的答案提示,我发现async-http-client库确实使用了X509TrustManager接口 ,但我没有做太多改变。 运行这个: openssl s_client -showcerts -connect ws.plimus.com:443 | grep -i md2 什么都没发现,所以我甚至不知道哪个证书导致了这个问题。 除了解决方法之外,我能做些什么吗? 我把演示代码重现了github上的问题。

HTTPS无法在Google Compute Engine上运行

我想知道是否有人在Google Compute Engine(而不是GAE)实例上使用SSL和HTTPS。 我无法在我的网站上使用HTTPS:浏览器和在线测试工具无法连接到我的服务器。 我的环境是ubuntu-1404-trusty-v20141212和Tomcat 8。 这是我做的: 我在实例的网络设置上勾选了“允许HTTP”和“允许HTTPS流量” 安装了我的4美元Comodo证书。 在server.xml上使用as-is Connector配置,仅添加了密钥库和密码 当我启动Tomcat并转到https://mysite.com:8443时,我收到上述错误。 一些诊断是: 记录catalina.out并没有说严重的事情。 使用netstat -ntlp |grep :8443 tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 8500/java显示我的tomcat正在收听8443 最后,我创建了一个具有相同环境的AWS EC2实例,并安装了我的SSL证书。 它立即工作,没有任何修补端口和防火墙。 任何关于如何使SSL在GCE上工作的建议都值得赞赏。