Tag: tls1.2

Java TLS 1.2服务器:AES-GCM解密

我目前正在研究Java TLS服务器。 (几天前我发布了关于KeyExchange签名的post) 我现在正在尝试解密使用AES-GCM编码的TLS消息。 服务器已经处理了CBC,但由于它很容易受到POODLE的影响,我们想要改为使用GCM。 我会尽力解释:) 对于此代码,我们使用的是Java 8u91,Netty 3.9.0。 我们不使用BouncyCastle,我们不打算,我们想坚持使用JDK。 代码 ! /** * Deciphers the fragment and returns the deciphered version of it * * @param fragment * to decrypt * @return the decrypted fragment * @throws InvalidKeyException * @throws InvalidAlgorithmParameterException * @throws IllegalBlockSizeException * @throws BadPaddingException */ private ChannelBuffer decodeCiphered(ChannelBuffer fragment, short contentType, […]

在Tomcat 8上配置SSL和连接超时

我设置了一个密钥库并从openssl.com获得了SSL证书。 我遵循的具体步骤如下: https : //drive.google.com/file/d/0B6PUGo7cBLcDTzdkc0pzT2pTMk0/view?usp=sharing 不幸的是,即使完全按照他们对tomcat的说明并使用客户支持,我的https连接也会超时。 好像tomcat已启动并运行,正在侦听端口443,但我不知道如何更深入地调试。 Http请求服务很好,所以我知道tomcat本身工作正常。 [ec2-user@ip- logs]$ sudo netstat -tunlp | grep 443 tcp6 0 0 :::443 :::* LISTEN 19407/java [ec2-user@ip- logs]$ ps -ef | grep java root 19407 1 1 23:03 pts/0 00:00:06 /usr/java/jre1.8.0_60//bin/java -Djava.util.logging.config.file=/usr/apache-tomcat-8.0.26//conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/apache-tomcat-8.0.26//endorsed -classpath /usr/apache-tomcat-8.0.26//bin/bootstrap.jar:/usr/apache-tomcat-8.0.26//bin/tomcat-juli.jar -Dcatalina.base=/usr/apache-tomcat-8.0.26/ -Dcatalina.home=/usr/apache-tomcat-8.0.26/ -Djava.io.tmpdir=/usr/apache-tomcat-8.0.26//temp org.apache.catalina.startup.Bootstrap start ec2-user 19449 18021 0 23:13 pts/0 00:00:00 […]

Java版本“1.7.0_79”的SSL握手失败

我正在使用Apache HttpClient与Java中的一个主机进行通信,它正在抛出handshake_failure 。 完整的痕迹是 SecureRandom的触发播种完成播种的SecureRandom忽略不可用的加密套件:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的加密套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA忽略不可用的加密套件:TLS_ECDH_RSA_WITH_AES_256_CBC_SHA忽略不支持的加密算法套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA256忽略不支持的加密算法套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA256忽略不支持的加密算法套件:TLS_DHE_RSA_WITH_AES_128_CBC_SHA256忽略不支持的加密算法套件:TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA256忽略不支持的加密算法套件:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384忽略不支持的加密算法套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384忽略不支持的加密算法套件:TLS_RSA_WITH_AES_256_CBC_SHA256忽略不可用的加密套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA忽略不支持的加密算法套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256忽略不支持 密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384忽略不可用的加密套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA忽略不支持的加密算法套件:TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384忽略不支持的加密算法套件:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256忽略不支持的加密算法套件:TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256忽略不可用的加密套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA忽略不可用的加密套件:TLS_RSA_WITH_AES_256_CBC_SHA忽略不支持的加密算法套件:TLS_RSA_WITH_AES_128_CBC_SHA256允许不安全的重新协商: false允许旧版hello消息:true是初始握手:true是安全重新协商:false %%没有高速缓存客户机会话* ClientHello,TLSv1 RandomCookie:GMT:1477593324 bytes = {140,171,214,217,33,165,60,228 ,102,207,88,112,29,40,198,242,159,61,172,89,116,98,7,195,182,144,159,226}会话ID:{}密码套件:[ 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_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,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,SSL_RSA_WITH_RC4_128_MD5,TLS_EMPTY_RENEGOTIATION_INFO_SCSV]压缩方法:{0}扩展elliptic_curves,曲线名称: {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扩展ec_point_for 垫,格式:[未压缩]扩展server_name,server_name:[host_name:integration.swiggy.com] [写入] MD5和SHA1哈希:len = 180 0000:01 00 00 B0 03 01 58 12 49 EC 8C AB D6 D9 21 A5 ……十一….!。 0010:3C E4 66 CF 58 70 1D 28 C6 F2 9F 3D AC 59 74 62 […]

带有TLSv1.2的Java 7连接到LDAPS握手失败

目前我使用的是Java 7,但我无法连接到LDAPS。 我尝试使用下面的代码,但我仍然无法连接: SSLContext ctx = SSLContext.getInstance(“TLSv1.2”); ctx.init(null, null, null); SSLContext.setDefault(ctx); 以下是我从程序中得到的错误: 2018-04-10 15:21:23,446 INFO [stdout](EJB默认值 – 1)EJB默认值 – 1,WRITE:TLSv1.2握手,长度= 221 2018-04-10 15:21:23,446 INFO [stdout](EJB默认值 – 1)EJB默认值 – 1,READ:TLSv1.2 Alert,length = 2 2018-04-10 15:21:23,446 INFO [stdout](EJB默认值 – 1)EJB默认值 – 1,RECV TLSv1 ALERT:致命,handshake_failure 2018-04-10 15:21:23,446 INFO [stdout](EJB默认值 – 1)EJB默认值 – 1,名为closeSocket() 2018-04-10 15:21:23,446 INFO [stdout](EJB默认值 – […]

OCSP检入Java安全套接字

如果我设置Security.setProperty(“ocsp.enable”, “true”) , SSLSocket或SSLServerSocket连接是否会使用OCSP自动检查证书吊销? 创建套接字时是否必须手动执行OCSP检查? (我没有使用CRL。)

如何在Win10 / Tomcat7 / Java7上从Web应用程序启用TLSv1.1 +出站通信?

对不起,如果我的问题似乎多余 我发现了大量的关于stackoverflow的问答以及一些关于为Tomcat,Java客户端,操作系统启用TLSv1.1 +的其他资源……但是我仍然无法在Win10 / Tomcat7 / Java7上的本地环境中启用它。 可能,我只是弄错了。 所以,要清楚,我在tomcat上部署了一个java web应用程序。 此Web应用程序通过https向远程服务发出请求。 以前这些远程服务支持TLSv1.0,我的应用程序运行正常。 现在这些远程服务只支持TLSv1.1 +,我收到错误/实际上是一个简单的html页面响应说: To access this website, update your web browser or upgrade your operating system to support TLSv1.1 or TLSv1.2 我试图以多种方式为我的webapp启用TLSv1.1 +出站通信支持,但它仍然无效。 所以,我尝试过: set CATALINA_OPTS=-Dhttps.protocols=TLSv1.1,TLSv1.2 set CATALINA_OPTS=-Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true 和JAVA_OPTS 。 我通过添加系统环境变量并在启动tomcat之前简单地设置cmd来尝试它。 此外,我在控制面板\程序\ Java控制面板高级选项卡上设置TLSv1.1和TLSv1.2支持。 这是关于我的环境的详细信息: Windows版本: Microsoft Windows [Version 10.0.14393] Tomcat启动日志(前n行): c:\Program Files\apache-tomcat-7.0.72\bin>catalina.bat run […]

Google App Engine Java是否支持TLS> 1.0

我们在Google App Engine上有一个Java应用程序。 我们使用Google的自定义域和SSL支持。 最近的安全审计发现了我们需要解决的与SSL配置相关的两个问题: 1)服务器端SSL / TLS端点配置为允许弱SSL / TLS密码套件。 具体来说:块大小为112位的块密码 – 在CBC模式下使用分组密码(例如AES,3DES)的DES,3DES和密码套件。 2)服务器端SSL / TLS端点配置为允许使用TLS协议版本1.0(“TLSv1.0”)的连接,其中包含已知的弱点 看看App Engine文档,我相信这些都超出了我们对App Engine环境的控制范围。 因此我们不能更改它们,除非我们在App Engine前面放置一个不同的负载均衡器或SSL终止点(例如,可能是CloudFlare,或者我们自己的自定义实例) 我的问题是,有没有办法控制App Engine中的SSL和TLS设置,如果没有,是将CloudFlare(或其他代理)置于其前面的最佳选择? 或者,如果Google对这些安全漏洞有合理的辩护/解释,我可以使用它来捍卫Google对App Engine应用程序的当前配置。

Java 8支持TLS 1.2,但Java 7不支持

当我尝试使用Java 7连接URL(支持TLS 1.2的供应商URL之一,之前在Java 7中工作正常)时,我发现了以下exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1943) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1059) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1321) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1305) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1087) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 所以我启用了-Dhttps.protocols=TLSv1.2 , -Djavax.net.ssl.trustStore=和-Djavax.net.ssl.trustStorePassword= 之后我也遇到了同样的问题。 然后我将Java版本升级到8,以便它可以连接到URL而不会出现任何SSL问题。 根据这篇博客 ,在Java 8中,TLS 1.2是默认的,TLS 1.2可以使用Java 7中的属性-Dhttps.protocols进行调整。在Java 7中,如果我启用了上面的属性,我可以无问题地访问URL通过我过去的经验。 但是对于URL,我被要求升级Java版本。 上面提到的Java 7中的Exception可能导致哪些供应商方面的更改? 如果没有升级Java 8,我无法访问URL? 当尝试-Djavax.net.debug=all我得到了以下日志 Ignoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Ignoring […]

如何在Java 7中启用TLS 1.2

我正在尝试在我的使用JBoss 6.4和Java 1.7的Web应用程序中启用TLS 1.2。 我在我的应用程序环境中有-Dhttp.protocols = TLSv1.2 ,但它似乎对我不起作用。 我有什么办法可以启用TLS 1.2吗? 我写了一个简单的程序 context = SSLContext.getInstance(“TLSv1.2”); context.init(null,null,null); SSLContext.setDefault(context); SSLSocketFactory factory = (SSLSocketFactory)context.getSocketFactory(); SSLSocket socket = (SSLSocket)factory.createSocket(); protocols = socket.getEnabledProtocols(); 在应用程序中运行此程序后,TLS 1.2将启用。 我不想运行此程序,但我想在应用程序启动期间直接启用它。 有什么办法吗?

如何在Java 6中使用TLS 1.2

看来Java 6支持高达v1.0的TLS,有没有办法在Java 6中使用TLS 1.2? 也许Java 6的补丁或特定更新会支持它?