问题标签 [sslsocketfactory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 仅为特定 httpclient 注册协议
美好的一天,我在我的代码中指的是这个网站。https://hc.apache.org/httpclient-3.x/sslguide.html
我正在使用旧版本的 httpClient 和 apache 协议。
我已经注册了一个协议,以下是我的代码的一部分
这将导致我的其他 httpClient 出现问题,因为协议已经在此sf
套接字工厂注册。
我打算这样做只注册协议httpClient
而不是全部。但我找不到这样做的方法。
任何人都可以建议?
java - 无法在 Java 中使用 HTTPS GET 请求读取任何响应
我对 HTTPS 请求有疑问,我想制作一个非常简单的 Java 程序来读取 GET 请求的响应。问题是我看不到任何响应,并且程序在屏幕上什么也不打印。
这是代码:
我正在将 SSLSocket 与 SSLSocketFactory 一起使用,是否需要执行任何程序才能从服务器获取响应?
spring-boot - 创建 bean 'jpaVendorAdapter' 时出错,无法实例化 [jpa.JpaVendorAdapter],NoClassDefFoundError: SslSocketFactory
当我尝试运行 Cmd >mvn clean spring-boot:run -DskipTests
我已经尝试过的
- 已删除文件夹 C:\Users\xyz.m2\repository
- Pom 文件版本冲突
- 清洁包装
- 删除项目并重试
如果您在阅读时发现问题请在此处查看https://docs.google.com/document/d/1i7_1gn9W6kybhueWU8CmVEByrE6ageNjqlsc4jx4cGA/edit?usp=sharing
java - 提高 SSLSocketFactory 设置/首次 HTTPS 请求性能
是否可以提高用于发出 HTTPS 请求的 SSLSocketFactory/SSLContext 初始设置的性能?
在我测试的几台机器上,第一个HTTPS 请求需要 >600 毫秒,这对于我们的用例来说太高了。
定时:
正如我发现的那样,大部分时间实际上并没有花在连接本身(握手、数据传输等)上,而是花在了SSLSocketFactory
.
取消注释工厂代码后:
我也尝试过直接创建 SSLContext ( SSLContext sc = SSLContext.getInstance("TLSv1.2"); sc.init(...); ...
),但性能几乎相同。
问:上下文设置如此昂贵有什么特别的原因吗?是否可以加快速度和/或使用一些不会受到相同初始成本影响的替代库?
cloud - 无法从 Data Fusion 连接 Cloud SQL mySql / postgreSQL 实例
目标是使用 Cloud Data Fusion 连接 Cloud SQL mysql 或 postgreSQL 实例。
- 使用 MySQL 和 postgreSQL 创建 Cloud SQL 实例
- 创建了 Cloud Data Fusion 实例
- 从牧马人 > 添加连接 > Cloud SQL MySQL
- 将 Data Fusion 实例添加为 IAM 中的成员,并添加了对以下 Cloud SQL 客户端 Cloud Data Fusion API 服务代理的权限
- 在添加连接中使用 jdbc url 作为 jdbc:mysql://google/mysql?cloudSqlInstance=&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false
- 为 mySQL 添加了驱动程序:mysql-connector-java-5.1.39-bin.jar
- 添加了 MySQL 套接字工厂 jar 作为库。
在测试连接时,它失败并出现错误:com.mysql.jdbc.Driver
期望与 Cloud SQL MySQL 的连接测试成功,以便可以构建数据融合管道。
authentication - SSLSocket.startHandshake 是否包含 SSLSocket 的证书验证和主机名验证?
从安全指南https://developer.android.com/training/articles/security-ssl.html#CommonHostnameProbs中,当 SSLSocket 与 HttpsUrlConnection 分开使用时,需要通过调用 hostnameverifier.verify() 方法手动验证主机名:
但我也看到安全代码示例说:
是否安全?在此套接字的读/写行为之前,我没有看到任何主机名验证方法被调用。socket.startHandShake() 是否包含它?
java-8 - 通过 SSLSocketFactory 连接时 Java 客户端支持哪些密码?
当我使用创建连接时,如何获得 Java客户端javax.net.ssl.SSLSocketFactory
支持的密码列表?
我们使用 Java 8。
我已经签到了jre/lib/security/java.security
。我只能找到禁用密码的列表。
在哪里可以找到支持的密码列表?
注意:我确实知道如何获取 Java服务器支持的密码列表。我想了解如何获取 Java客户端支持的密码列表。
添加
返回的列表getSupportedCipherSuites
如下:
java - 如何在新的(未弃用的)SSLSocketFactory 中加载私钥密码?
我当前的 TCP 客户端正在使用org.apache.http.conn.ssl.SSLSocketFactory
我正在迁移到的构建套接字import javax.net.ssl.SSLSocketFactory;
但是,我不确定如何加载存储在我已经拥有的 .p12 文件中的客户端证书的私钥,作为新 SSLSocketFactory 的上下文?
这是我现有的代码,使用已弃用的 SSLSocketFactory:
这是我可以从文档中管理的最佳代码:
- 我认为问题在于我没有
.custom()
新库下的上下文方法。
新的 SSLSocketFactory 使用什么? - 是不是 JKS 密钥库没有存储在其中的私钥的内部密码(我直到现在才使用 PKCS,不熟悉 JKS 格式),这就是为什么我看不到私钥密码被引用的原因至?
java - 通过默认 SSLSocketFactory 创建的 Socket 发送密码是否安全?
不假思索,我通过使用JavaSocket
默认创建的连接发送了一个密码。SSLSocketFactory
对于SSLSocketFactory.getDefault()
,文档说明如下:
返回默认的 SSL 套接字工厂。第一次调用此方法时,
ssl.SocketFactory.provider
会检查安全属性。如果它不为 null,则加载并实例化具有该名称的类。如果成功并且对象是 的实例SSLSocketFactory
,则将其设为默认 SSL 套接字工厂。否则,此方法返回
SSLContext.getDefault().getSocketFactory()
. 如果该调用失败,则返回一个不工作的工厂。
我确信 Java 并没有试图欺骗我,但由于这是我第一次这样做,我想确保它是我可以依赖的密码加密的东西。
编辑:在服务器响应中“Set-Cookie”的属性数据的末尾,它显示“HttpOnly”,然后是“Secure”。我假设这意味着服务器已经确认连接是安全的,但我不是 100% 确定。
java - Java:如何在“常规” TCP Socket 和 SSLSocket 之间进行抽象
编辑:删除startHandshake();
,因为它与问题无关并且很少需要(例如,在我的情况下不是)
我有一个相当具体和罕见的客户端-服务器协议(通过 TCP)。
我已经使用 SSLSocket 实现了它。
现在,我预见我可能需要在未加密的连接上使用相同的协议。
我的问题是实现协议的类有一个字段:(public SSLSocket currentSocket;
然后我的客户端类中的方法会做各种各样的.read(), .write(), flush()...
)
我考虑过更改字段类型,如下所示:public Socket currentSocket;
但是,问题是我的连接过程不兼容:
- java.net.Socket 的默认构造函数显然不接受密钥库的东西
我不想仅仅因为这种差异而重新实现我的整个客户......
我的一个想法是,当我需要一个纯文本套接字时,创建一个没有加密的 SSLSocket。
我不知道这是否是一种专业的方式,或者它是否会起作用(服务器将期望在新用例中使用纯文本客户端套接字)我的另一个想法是定义两个字段,一个用于纯文本套接字,一个用于 SSL 套接字,然后根据需要使用逻辑将输入/输出流链接到正确的字段。但是,这将导致“挂起”字段。如果您使用 SSL,则会有一个冗余字段
Socket plaintextSocket
,反之亦然...
有没有办法让我的字段更加抽象,以便我可以在同一个客户端中定义它,然后根据实例化和连接currentSocket
的已知变量(类似于 )指示稍微不同的客户端代码路径?needSSLsocket=true