Tag: ssl

在JVM信任库中列出证书

我已经通过系统属性定义了一个自定义信任库: System.setProperty(“javax.net.ssl.trustStore”, …); System.setProperty(“javax.net.ssl.trustStorePassword”, …); 鉴于VM已经负责加载文件,我想列出那些已加载的证书。 我不想再次将信任库加载到流中并从那里获取证书,而是希望看到VM已经自己加载的那些。 另外,我希望从我自己的应用程序中看到它们,而不是使用单独的工具。 我做了一些谷歌搜索,但到目前为止,我一直无法找到这个。

是否有解决方法:java.lang.RuntimeException:无法生成DH密钥对

我正在测试Java应用程序。 我正在尝试使用DH密码套件启动SSL握手。 但我收到以下错误: java.lang.RuntimeException: Could not generate DH keypair 有些人建议使用BouncyCastle ,但很多人都报告了它的错误,所以如果有另一种选择,我不鼓励使用它。 有人建议从http://www.oracle.com/technetwork/java/javase/downloads/index.html下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 。 我确实在C:\Program Files (x86)\Java\jre7\lib\security替换了以下两个文件java.security和java.policy 。 请注意,我还注意到我安装了Java\jre7\security : Program Files (x86)和Program Files ,我替换了它们。 但是,我仍然看到同样的错误。 这个错误有没有解决方法? 编辑:堆栈跟踪: javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair at sun.security.ssl.Alerts.getSSLException(Unknown Source) at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) at sun.security.ssl.SSLSocketImpl.handleException(Unknown Source) at […]

Thread-6,RECV TLSv1 ALERT:致命,handshake_failure

这段代码出了什么问题,它应该信任所有主机,但它不会… 它适用于例如google.com,但没有在我的机器上本地运行的API网关服务,为什么? SSL调试输出 触发种植SecureRandom播种SecureRandom忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 …忽略不支持的密码套件:TLS_RSA_WITH_AES_128_CBC_SHA256允许不安全的重新协商:false允许传统的hello消息:true是初始握手:true是否是安全重新协商:false Thread-6,setSoTimeout(0 )调用%%没有缓存的客户端会话*** ClientHello,TLSv1 RandomCookie:GMT:1434280256 bytes = {216 … 40}会话ID:{}密码套件:[TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,…… SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_RC4_128_MD5,TLS_EMPTY_RENEGOTIATION_INFO_SCSV]压缩方法:{0}扩展椭圆曲线,曲线名称:{secp256r1 .. secp256k1}扩展ec_point_formats,格式:[未压缩] Thread-6,WRITE:TLSv1 Handshake,length = 163 Thread-6,READ:TLSv1 Alert,length = 2 Thread-6,RECV TLSv1 ALERT:fatal,handshake_failure Thread-6,名为closeSocket()Thread-6,处理exception: javax.net.ssl.SSLHandshakeException:** 收到致命警报:handshake_failure ** import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.net.URLConnection; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.security.cert.X509Certificate; public […]

Curl cacert与Java HttpClient相当

我想知道我是否能够使用curl建立连接,如下面的命令, curl –cacert some.pem https://someurl.com/resource 如何将其转换为httpclient代码? 我知道我需要转换pem文件并创建一个新的密钥库等等。但是所有这些openssl,keytool命令,密钥库,信任库让我困惑,我不知道使用哪个以及使用哪个顺序。

“SocketException:未实现未连接的套接字”,带有自签名SSL证书

(我已经问过jmeter用户邮件列表的相同问题,但我也想在这里尝试一下 – 所以至少我可以在找到后用答案更新它)。 我在使用JMeter使用自签名SSL证书测试Tomcat webapp时遇到问题。 JMeter抛出一个SocketException,消息Unconnected sockets not implemented 。 根据JMeter的文档 ,该应用程序的设计和编写是为了接受任何证书,自签名或CA签名或其他。 有没有人遇到过这个特定的例外? 我试图从服务器导出此证书并将其导入我的本地密钥库(使用keytool -import -alias tomcat -file ),但结果是相同的。 我也尝试将javax.net.debug = all设置为JVM arg( JSSE参考指南将此列为调试步骤); 但是,我在任何地方都没有看到任何调试输出 – 我是否应该在标准输出/错误之外的其他地方看到它?

如何在Eclipse PAHO Java MQTT客户端和Mosquitto代理之间创建PSK连接?

我正在尝试在mosquitto mqtt代理和使用Eclipse Paho客户端库的Java编写的应用程序之间配置预共享密钥加密连接。 我已经成功地在两者之间建立连接,使用无加密并使用SSL,其中服务器证书经过身份validation但没有客户端证书。 我想通过使用预共享密钥来加密连接(身份validation并不重要),这是mosquitto代理肯定支持的,但我不确定Eclipse Paho库是否支持它。 该库为您提供了两种配置安全连接的方法。 要么通过 setSSLProperties(java.util.Properties props) 方法 – 使用以下属性: com.ibm.ssl.protocol com.ibm.ssl.contextProvider com.ibm.ssl.keyStore com.ibm.ssl.keyStorePassword com.ibm.micro.security.Password.obfuscate(char[] password). com.ibm.ssl.keyStoreType com.ibm.ssl.keyStoreProvider com.ibm.ssl.trustStore com.ibm.ssl.trustStorePassword com.ibm.micro.security.Password.obfuscate(char[] password). com.ibm.ssl.trustStoreType com.ibm.ssl.trustStoreProvider com.ibm.ssl.enabledCipherSuites com.ibm.ssl.keyManager com.ibm.ssl.trustManager 或通过 setSocketFactory(javax.net.SocketFactory socketFactory) 方法。 有没有人对我使用的工具和库有任何经验,任何人都可以提供任何建议,以便我可以得到一些有用的东西? 是否有可能创建一个ssl套接字工厂,它能够返回一个可以应对我需要的PSK实现的套接字? 谢谢你的帮助 :-)

Tomcat 8中的SSL:服务器和客户端JKS +客户端公共cer

我已按照本指南操作,以便使用SSL层设置我的Tomcat 8实例,生成客户端和服务器密钥库以及自动签名的公共客户端证书。 问题是,我想,我真的不知道如何配置Tomcat的连接器…… 在这里,您是我当前的server.xml文件(删除了不必要的注释): <!– –> <!—-> 使用这个,我试图访问tomcat欢迎页面: 本地主机:8443 https://开头本地主机 https://开头本地主机:8443 但他们都没有工作…… 有提示吗? 谢谢! 编辑 解: 我已经能够通过https:// localhost:8443访问它

获取与证书匹配的所有主机名列表

如何获取与证书( java.security.cert.X509Certificate )匹配的所有主机名和IP的列表,包括主题备用名称? 我只发现了javax.net.ssl.HostnameVerifier的各种实现。

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的keytool命令,带有IP地址

我试图通过httpsurl获取图片,但我遇到了一些问题。 我用Java的keytool命令生成一个密钥库。 如果我指定公共名称(CN)等于我的主机名,例如CN = JONMORRA,然后尝试通过我的主机名查询,例如https:// JONMORRA:8443 /那么它工作正常。 但是,如果我将公共名称指定为我的IP地址,例如CN = 192.168.56.1,并尝试通过我的IP地址查询,例如https://192.168.56.1:8443/然后我收到错误 HTTPS主机名错误:应为 这说明我的主机名是错误的,即使这是我在密钥库中指定的内容。 我想使用ip地址而不是主机名,这样我就可以在Linux和Windows机箱之间进行查询,而无需担心主机名。 为什么CN不接受IP地址,我该如何解决? 谢谢