以编程方式从PEM获取密钥存储
如何从包含证书和私钥的PEM文件中编程地获取密钥库?我正在尝试在HTTPS连接中为服务器提供客户端证书.我已经确认,如果我使用openssl和keytool获取JKS文件,则客户证书有效,我会动态加载该文件.我什至可以通过在p12(pkcs12)文件中动态阅读来使它起作用. 我正在考虑使用Bouncycastle的Pemreader类,但我无法遇到一些错误.我正在使用-djavax.net.debug = All Option和Apache Web服务器运行Java客户端.我不确定要寻找什么. Apache错误日志指示: ... OpenSSL: Write: SSLv3 read client certificate B OpenSSL: Exit: error in SSLv3 read client certificate B Re-negotiation handshake failed: Not accepted by client!? Java客户端程序指示:
12 2024-04-03
编程技术问答社区
通过java进行scp传输
通过Java编程语言执行SCP转移的最佳方法是什么?看来我可能可以通过JSSE,JSCH或有弹性城堡Java图书馆执行此操作.这些解决方案似乎都没有一个简单的答案. 解决方案 我最终使用 jsch - 这很简单,这似乎很简单,似乎扩大了扩展很好(我每隔几分钟抓到几千个文件). 其他解决方案 插头:SSHJ是唯一的理智选择!请参阅以下示例开始:其他解决方案 看一下这里 这是蚂蚁SCP任务的源代码. "执行"方法中的代码是螺母和螺栓的位置.这应该使您对所需的内容有一个清晰的了解.我相信它使用JSCH. 另外,您也可以直接从Java代码执行此蚂蚁任务.
8 2024-04-03
编程技术问答社区
用客户证书进行SSL重新协商导致服务器缓冲区溢出
我已经编码了一个Java客户端应用程序,该应用程序使用客户端证书通过HTTPS连接到Apache Web服务器,并执行HTTP将文件放置到服务器上.它可以与小文件一起使用,但与大文件崩溃. Apache Server日志显示以下内容: ... OpenSSL: Handshake: done ... Changed client verification type will force renegotiation ... filling buffer, max size 131072 bytes ... request body exceeds maximum size (131072) for SSL buffer could not buffer message body to allow SSL renegotiation to proceed ... OpenSSL: I/O error, 5 bytes expected to read on BIO (10
18 2024-02-27
编程技术问答社区
当使用HttpsURLConnection时,如何覆盖Android发送到服务器的密码列表?
在TLS协商期间,客户端向服务器发送了支持的密码列表,服务器选择一个,然后加密开始.我想更改当我使用HttpsURLConnection进行通信时,通过Android发送的密格列表. . 我知道我可以在HttpsURLConnection对象上使用setSSLSocketFactory将其设置为使用SSLSocketFactory.当我想更改SSLSocketFactory返回的SSLSocket使用的Trustmanager等时,这很有用. 我知道,通常可以使用SSLParameters对象对此密码列表进行编辑,并使用它们提供的方法将其传递到SSlsocket或SSLEngine对象. 但是SSLSocketFactory似乎没有暴露这种方法! 我找不到改变由SSLSocketFactory i传递给HttpsURLConnection创建的返回SSLSocket对象的SSLParameters的方法. 该怎么办? 我猜这也与Java一般,不仅与A
16 2024-01-27
编程技术问答社区
得到这个错误。"javax.net.ssl.SSLHandshakeException: no cipher suites in common"
我有一个用c#和java中的服务器编写的客户端.因此,当我尝试连接时,我在服务器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(133
16 2024-01-07
编程技术问答社区
如何在Java6中禁用约束性检查(Netscape证书类型)?
我正在尝试使用内置的com.sun.net.httpserver.httpsserver中的内置ins in in in in in in in in in In Inn in In Inn in In Inn in In Inn in In In Inn In Inn In In In In In Inn构建自定义的HTTPS服务器.它可以正常工作,直到我需要客户身份验证为止.那时,它在服务器上的SSL调试中的以下异常失败. 太阳. 我正在使用我们内部CA颁发的证书,该证书用于我们内部的所有应用程序.我检查了证书详细信息,发现该类型为" SSL Server"(下面引用的详细信息).由于我们的策略是为所有内部应用程序使用" SSL Server"类型,因此很难更改CERICATE.由于我想为客户端使用服务器证书,因此我不认为这是一个安全问题. 我正在寻找的方法是禁用Java中此约束检查的方式.有人遇到过这个问题并解决了这个问题吗?任何帮助将受到高度赞赏. 最好的问候
20 2023-12-15
编程技术问答社区
如何初始化具有多个信任源的TrustManagerFactory?
我的应用程序具有一个个人密钥库,其中包含可信赖的自签名证书,可用于本地网络,例如mykeystore.jks.我希望能够使用已在本地提供的自签名证书连接到我本地网络中的公共网站(例如Google.com). 问题是,当我连接到 https://google.com ,路径构建失败,因为设置我自己的密钥库覆盖了包含root cas的默认密钥库与JRE捆绑在一起,报告了例外 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 但是,如果我将CA证书导入自己的密钥库(mykeystore.jks),则可以正常工作.有没有办法支持两者? 我为此目的有自
10 2023-12-15
编程技术问答社区
在Websphere 8.0上使用JSSEHelper以编程方式指定一个出站SSL配置。
我正在尝试使用在8.0.0.13中配置的自定义出站SSL配置以编程方式创建SSL连接(IBM WebSphere Application Server使用Java 1.6.0): (Security-> SSL证书和密钥管理 - >相关项目:SSL配置). 安全连接已成功创建:位于IS服务器上的Servlet已连接到127.0.0.0.1:1234的服务器端插座. 问题在于,我在SSL配置中定义的"保护质量(QOP)设置"定义的首选密码套件被忽略. 所有其他属性(例如协议或JSSE提供商)都很好地考虑了. 我已经实施了一个ssl-client角色的servlet. 该servlet使用了此自定义SSL配置,该配置已定义以下密码套件: ssl_rsa_with_aes_128_cbc_sha ssl_dhe_rsa_with_aes_128_cbc_sha ssl_dhe_dss_with_aes_128_cbc _ sha ssl_rsa_with_aes_128_gc
20 2023-12-03
编程技术问答社区
如何在网络逻辑中启用1.2版TLS,用于外发https交易
我正在从事一个项目,该项目需要在Web Logic Server上启用TLS版本1.2进行HTTPS Transactions. 我尝试在Web Logic启动脚本中使用以下属性: weblogic.security.ssl.minimumprotocolversion = tlsv1.2 或者 weblogic.security.ssl.protocolversion = tls 但是,当我进行了一些测试时,我能够在WebLogic SSL日志中看到TLSV1仍在ClientHello消息中使用.我们尝试了所有置换和组合,以使用TLSV1.2启动TLS握手,但到目前为止还没有成功. 当我们在WebLogic中启用了基于Sun的HTTP处理程序并在启动脚本中使用以下属性时,我能够使用TLSV1.2 -duseunhttphandler = true -dhttps.protocols = tlsv1.2 我的问题是如何在使用WebLogic HTTP连接类而不是基于Su
14 2023-12-01
编程技术问答社区
在ubuntu 15.10和openjdk-8-jdk中是否缺少cacerts文件?
我刚刚安装了Ubuntu 15.10及其OpenJDK-8-JDK(由Apt-Get). 现在我缺少cacerts文件. 通常位置有一个链接: ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts lrwxrwxrwx 1 root root 27 Oct 22 01:47 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -> /etc/ssl/certs/java/cacerts 但是,/etc/ssl/certs/java/cacerts没有什么: stat /etc/ssl/certs/java/cacerts stat: cannot stat ‘/etc/ssl/certs/java/cacerts’: No such file or directory 解决方案 这是由于这里已经报告的错误: ubu
52 2023-11-01
编程技术问答社区
Tomcat: 使用强密码的TLSv1.2不工作
我安装了tomcat-7,在端口8443上为TLSV1.2 配置了支持 我的连接器配置: 协议=" org.apache.coyote.http11.http11nioprotocol" sslenabled =" true" scheme =" https" secure =" true" sslprotocol =" tlsv1.2" sslenabledprotocols =" 然后,我配置了我想使用的强密码列表. tls_ecdhe_ecdsa_with_aes_256_gcm_sha384 tls_ecdhe_ecdsa_with_aes_256_cbc_sha384 tls_ecdhe_rsa_with_aes_256_gcm_sha384 tls_ecdhe_rsa_with_aes_256_cbc_sha384 我读过,tomcat可以使用Java JSSE或OpenSSL JSSE协议=" org.apache.coyote.http11.http11n
14 2023-10-24
编程技术问答社区
SunX509的用途是什么?它可以与使用IbmX509的各方合作吗?
当我手动创建KeyManager时,其中一个步骤是: KeyManagerFactory.getInstance("SunX509") 这在我需要指定" IBMX509"的IBM JRE上不起作用. 我的问题: 我读到这称为"编码算法的证书".这意味着什么?什么时候使用? 客户使用IBM算法并且服务器使用Sun算法时会发生什么? 谢谢, doron 解决方案 我读到这称为"编码算法证书". 不,不是.它是一种关键经理算法,可以定义提供商和内容类型,在这种情况下,"太阳"或" IBM"和X.509. 无论如何,最好的解决方案也不是使用.只需使用 KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); KeyManager和KeyManagerFactory只需处理本地密钥库/信托店即可.同伴不在乎这一点,只对其中的证书而间接.
58 2023-09-28
编程技术问答社区
哪些版本的Java将支持TLS1.1
哪些版本的Java将支持TLS1.1 我只需要确切的java版本,然后更新 jdk 7uxx 出于这个问题的原因,我面临着将TLS1.1与Java 1.7连接的问题.在大多数文档中,我都阅读了它的支持,但是我们必须手动启用它.即使在启用后它不起作用. 虽然谷歌搜索,但我得到的信息只能与Java 7U95一起使用. 仅供参考 java jdk不启用tls v1.1和tls v1.2默认客户端: http://docs.oracle.com/javase/7/docs/docs/technotes/guides/guides/security/sunproviders.html#tl.tlsprotonote JDK.TLS.Client.Protocols System属性已被引入,以允许控制基础平台TLS实现并在客户端上启用特定协议.该系统属性均可在所有JDK 8版本中使用,或Java 7更新95(2016年1月)和Java 6 Update 121(2016年7月).
46 2023-09-28
编程技术问答社区
使用java中现有的SSL密钥/证书对配置SSLContext(JSSE API)。
我正在从事一个Java项目,我应该在服务器端实现SSL-protocol.这是我第一次在应用程序中使用SSL,因此我阅读了很多有关SSL/TLS的信息,现在我想在Java中实现某些内容.我将使用JSSE API实现此过程: 客户将连接到我 我将使用我的公共钥匙证书进行身份验证.我的意思是我将向客户发送公共密钥及其相应的证书 客户使用我的公共密钥和RSA-Algorithm加密秘密键并将其发送给我 我已经在计算机上保存了私钥和证书.因此,我犹豫了如何从Java应用程序访问它们.我不知道,这是访问它们的步骤,因为这是我第一次处理这种东西 我将使用SSLEngine.因此,我应该首先使用此代码初始化SSLContext: // First initialize the key and trust material. KeyStore ksKeys = KeyStore.getInstance("JKS"); ksKeys.load(new FileInput
92 2023-09-28
编程技术问答社区
Java SSL握手警告 no_negotiation
与WebService通信时发生了此错误. 客户报告错误: javax.net.ssl.SSLException: Received fatal alert: unexpected_message at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1991) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1098) at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.jav
20 2023-09-28
编程技术问答社区
如何使用Keytool验证证书?
我想使用Oracle的SSLSocket类验证以验证以创建SSL插座.在我的程序中,我希望客户通过其证书(使用Keytool创建).服务器应验证证书,然后进行通信.我希望服务器检查连接到它的每个客户端的证书.假设所有密钥(服务器和客户端)存储在Keystore中.我该如何实施? 编辑: 如果我无法正确传达我的问题,请原谅我.我是新来的.我正在阅读此链接获得一些指导.在这里,在阅读密钥库时,服务器直接对客户端的密钥文件名(viz" client.public")进行了硬编码.但是,在我的程序中,客户端将指定该服务器的公共密钥文件名是什么. 解决方案 您刚刚描述了幕后已经发生的事情.您要做的就是创建一个SSLServerSocket,并将SeelitClientAuth设置为true,然后开始照常接受连接. JSSE将完成其余的.
32 2023-09-28
编程技术问答社区
如何从一个java应用中访问HTTPS网址
我知道这是一个非常基本的问题,但是有些我如何设法找到解决此问题的解决方案.我有一个具有主要方法的Java类.在这种方法中,我尝试访问如下的HTTPS URL: package helloworld; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import javax.net.ssl.HttpsURLConnection; public class ConnectHttps { public static void main(String[] argsd) { System.out.println("***************Https testing started **************"); try
16 2023-09-28
编程技术问答社区
当试图向SSLServerSocket发送时,SSLSocket异常握手错误
这是我第一次处理sslsockets 我创建了sslserversocket和sslsocket, serversocket运行正常, 但是,当尝试运行SSLSLOCKETCOCT(客户端)时,它不会运行,并且此错误在我身上出现: 严重:无效 javax.net.ssl.sslhandshakeexception:收到致命警报:handshake_failure 在sun.security.ssl.alerts.getsslexception(alters.java:192) 在sun.security.ssl.alerts.getsslexception(alters.java:154) 在sun.security.ssl.sslsocketimpl.recvalert(sslsocketimpl.java:1961) 在sun.security.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:1077) 在sun.se
16 2023-09-28
编程技术问答社区
控制远程客户端的TCP连接状态
我需要编写一个带有集中式服务器和许多远程客户端的平台来执行任务.我目前正在使用RMI连接,是充当远程客户端客户端(RMI服务器)的集中式服务器.它在工作,但是我担心在不久的将来遇到很多问题(使用RMI是个好主意吗?),所以我在考虑将代码移至SSLsockets并发送序列化类以进行相同的操作. 我在这种方法上的问题y如何控制活跃客户列表.我需要有连接数据来发送任务,我需要知道它们是否还活着.有什么想法吗? 事先感谢您的帮助. 解决方案 没有" RMI连接"之类的东西,但是您可以通过RMI远程会话模式(Google it)以及在远程会话对象上实现未参考的接口,可以告诉您您想要的内容当客户端不再是当前的情况时,如果他们尚未调用会话记录方法,如果您提供的话. 请参阅此答案有关远程会话模式的详细信息.
20 2023-09-28
编程技术问答社区
SSLContext。我应该重新加载吗?
我有兴趣动态更新信托基地. 最好的选择是什么? 重新加载SSLContext还是可以重新创建TrustManagers? 解决方案 您不能'重新加载'一个SSLContext,但是您当然可以创建一个新的.自定义TrustManager无济于事,因为它的基础TrustManagerFactory与密钥库有连接,而不是TrustManager. 其他解决方案 在使用现有SSLContext时,可以在SSLContext中重新加载Trustmanager.请参阅此处的答案,以获取我发布的类似问题的答案:它包含代码样本的完整片段.
28 2023-09-28
编程技术问答社区