Tag: ssl

错误:0c0890ba:ASN.1编码例程:asn1_check_tlen:WRONG_TAG

我正试图在我的截击请求中实现ssl支持(我也在SO中看到类似问题的答案,但它对我没有帮助) 在本文的帮助下,我将证书扩展名从.cer转换为.bks 根据这个SO答案我接下来做 mRequestQueue = Volley.newRequestQueue(this, hurlStack); private HurlStack hurlStack = new HurlStack() { @Override protected HttpURLConnection createConnection(URL url) throws IOException { HttpsURLConnection httpsURLConnection = (HttpsURLConnection) super.createConnection(url); try { httpsURLConnection.setSSLSocketFactory(getSSLSocketFactory()); httpsURLConnection.setHostnameVerifier(getHostnameVerifier()); } catch (Exception e) { AppUtils.printLog(Log.ERROR, TAG, e.getMessage()); } return httpsURLConnection; } }; private SSLSocketFactory getSSLSocketFactory() throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException, KeyManagementException { CertificateFactory […]

将Windows证书导入Java

我有一个java服务器试图通过SSL连接到外部Ldap服务器(作为客户端,以执行查询)。 我连接时遇到问题,因为他们在连接时发送给我的证书只在我的本地Windows Truststore中受信任,但在java truststore(cacerts)中不存在。 有没有办法告诉Java信任Windows可信任的任​​何证书? 或者,有没有办法将所有受信任的证书从Windows信任库导入Java的cacerts? 任何想法将不胜感激。

Java证书客户端SSL:无法找到所请求目标的有效证书路径

我们需要客户端身份validation才能向我们的某些Web服务发送RESTful请求。 我已经通过密钥工具在我的本地mac os上安装了客户端证书(.pem)和密钥。 这些都不是自签名的。 openssl pkcs12 -export -name myservercert -in not_self_signed.crt -inkey server.key -out keystore.p12 …并转换为JKS格式 keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert 我正在尝试构建一个Java客户端来进行身份validation。 这是我到目前为止所提出的: import java.io.FileInputStream; import java.security.KeyStore; import javax.net.ssl.SSLContext; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContexts; import org.apache.http.util.EntityUtils; public class TestClientCustomSSL { public […]

具有多个密钥和不同密码的Java密钥库

我创建了一个java JKS keytore: keytool -genkey -alias mydomain -keyalg RSA -keystore mytest.jks -keysize 2048 之后我创建了一个P12文件,使用服务器的CRT和openssl: openssl pkcs12 -export -in server.crt -inkey server.key > server.p12 现在我将P12文件导入到我之前创建的JKS密钥库中: keytool -importkeystore -srckeystore server.p12 -destkeystore mytest.jks -srcstoretype pkcs12 它工作,我可以使用此JKS初始化到服务器的SSL连接: public static SSLContext initSSLContext(String keystoreLocation, String keystorePwd, String truststorePwd, String serverCrtPwd) SSLContext context; context = SSLContext.getInstance(“TLS”); KeyStore ks = KeyStore.getInstance(“JKS”); ks.load(new FileInputStream(keystoreLocation), […]

ssl连接中的握手失败bewteen客户端/服务器java

我正在尝试通过SSL编写服务器/客户端通信,每一方都有自己的密钥库和证书,双方都需要相互validation。 我自定义TrustManager以允许默认情况下validation不在信任库中的证书。我通过keytool生成密钥和证书。 但是我首先在服务器端遇到以下错误: trigger seeding of SecureRandom done seeding SecureRandom Allow unsafe renegotiation: false Allow legacy hello messages: true Is initial handshake: true Is secure renegotiation: false Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for SSLv2Hello Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for SSLv2Hello Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for SSLv2Hello Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for SSLv2Hello […]

HttpUnit WebConversation SSL问题

如何从WebConversation或WebRequest对象的上下文中忽略SSL证书问题? 我知道我可以创建一个接受所有证书的假TrustManager但是如何在HttpUnit上下文中设置它? 以下是我得到的例外情况: [Security:090508]Certificate chain received from my.domain.com – NUM.NUM.NUM.NUM was incomplete., [Security:090477]Certificate chain received from my.domain.com – NUM.NUM.NUM.NUM was not trusted causing SSL handshake failure. 我需要以某种方式将SSLSocket设置设置为WebConversation或WebRequest对象; 查看用于HttpUnit的JavaDocs,没有这样的方法或构造函数。 有没有办法将它包装在一个暴露SSLSocket属性的对象中?

如何控制SSLContext范围

如果我使用以下代码,因为我想,例如,更改证书的validation方式。 trm =一些信任经理 SSLContext sc = SSLContext.getInstance(“SSL”); sc.init(null, new TrustManager[] { trm }, null); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 然后,这将为将来创建的所有https连接设置SSLContext,而不管是什么线程。 控制范围的最简洁方法是什么,以便我只为我想要的那些电话设置它?

文件.keystore和CAKey.pem在SSL中的作用?

我成功地通过http从https上获取了我的web应用程序。 实际上我怀疑在这个过渡阶段遇到的两个文件的角色。 我可以看到两个密钥文件,一个是.keystore,另一个是CAKey.pem。 我特别想知道他们在什么时候进入画面。 在server.xml中,我找到了一个atrributes keystoreFile(其值是keystore的位置)和keystorePass(我在生成.keystore文件期间给出的密码值)的条目,而在ApplicationConfig.xml中我找到了两个属性,即openSSLLocation (我可以看到openssl目录的值),第二个属性是password(对于哪个值,我在生成CAKey.pem文件时给出了密码值)。 想要具体了解这些文件包含哪些内容并在SSL中发挥作用? 编辑我通过bruno引出的链接。 我还通过另一个信息链接链接,即http://www.verisign.com/ssl/ssl-information-center/how-ssl-security-works/ 。 通过这两个链接之后我的理解是kestore文件包含SSL证书的详细信息(如果我们使用授权的CA像verisign那么它们提供128位加密,这可能是由java keytool命令证书提供的默认密钥存储不会)。 在包含私钥的证书的基础上,加密发生。 对? 正如versign链接所指出的那样,最后数字签名也作为确认发出。 不确定此证书是否有任何目的或只是链接中指出的确认? 像CACert.pem,CAKey.pem这样的文件与数字证书有关吗? 编辑2 以下是我遵循SSL的步骤 1)从http://www.slproweb.com/products/Win32OpenSSL.html下载Win32OpenSSL_Light-0_9_8t并安装 2)在OpenSSL安装目录中,创建子目录private。 证书颁发机构的私钥将存储在此处。 在OpenSSL安装目录中,创建子目录newcerts。 CA签署的新证书将存储在此处。 在OpenSSL安装目录中,创建一个名为index.txt的空文件。 OpenSSL将其签名证书数据库保存在该文件中。 从OpenSSL安装目录的子目录bin / PEM / demoCA,将文件串行复制到OpenSSL安装目录。 打开复制的串行文件并将其编辑为00并保存。 每个新的CA签名证书的序列号都取自此文件的内容,每次签署证书时该内容都会增加。 3)在openssl.cfg .Did中,以下更改dir = c:/ openssl < – 这是OpenSSL安装目录certificate = $ dir / private / cacert.pem #crl = $ dir / crl.pem […]

身份validation:Kerberos还是SSL?

我正处于Java EE应用程序的“预设计”阶段(如果有这样的事情!),它将在客户端使用Swing框并实现Web和服务器层的组件。 我立即提出了一些技术选择,并一直在阅读Kerberos和SSL如何工作之间的差异。 我无法找到任何答案的一个领域是如何在Kerberos或SSL之间进行选择的主题。 换句话说,您如何判断何时使用任何一种协议? 假设Swing客户端不受特定传输(UDP,TCP或其他)的约束,并且可以使用/ any。 如何选择这两者中的哪一个更适合其应用? 谢谢!

为JMS使用特定密钥库

我们要求将SSL客户端证书用于与IBM MQ服务器的JMS连接。 我已经专门针对Websphere MQ提出了一个问题,但后来我了解到这主要是JSSE的工作,可以通过Java系统属性进行配置(例如-Djavax.net.ssl.keyStore= )。 但是由于我们的WildFly 9 AS中已经有应用程序其他部分的活动密钥库,我正在寻找一种方法来为JMS部分启用特定的密钥库 – 这可以做到吗?