当前位置: 首页 > 面试题库 >

如何检查服务器是否支持Java的SSL?

景志
2023-03-14
问题内容

我需要检查服务器是否支持SSL和来自Web服务器的密码。

我查看了Java中的SSLSocket,但无法正常工作。

我使用的方法getSupportedProtocols()始终为每个网址提供相同的协议。此外,我没有从服务器获得密码。我猜getEnabledCipherSuites()是正确的方法

try {
    SSLContext ctx = SSLContext.getDefault();
    ctx.getClientSessionContext().setSessionTimeout(5); // in seconds
    SSLSocket socket = (SSLSocket) ctx.getSocketFactory().createSocket("host.com", 443);

    socket.setSoTimeout(5000); // in millis
    String[] result = socket.getEnabledCipherSuites();
    Arrays.sort(result);
    for (int i = 0; i < result.length; i++) {
        System.out.println(result[i]); 
    }
 } catch (IOException ex) {
     System.out.println("Error!");
 }

如何检查服务器使用SSL?服务器返回了什么密码?


问题答案:

getSupportedProtocols()/CipherSuites()分别返回 您一方
可以支持的协议和密码列表。getEnabledProtocols()/CipherSuites()返回您启用的这些列表的子集。

这不会告诉您有关服务器支持什么的太多信息。

根据TLS规范,客户端发送可以使用的最高协议版本以及要使用的密码套件列表。然后,服务器使用该列表(如果有)中支持的最高协议,并从该列表(如果有)中选择所需的密码套件。

关于如何完成密码套件选择,有一些灵活性(例如,请参阅SSLHonorCipherOrderApache
Httpd中的指令
)。

本质上,如果要查看服务器实际支持的密码套件,则必须遍历所支持的每个密码套件,并使它们一个接一个地进行尝试。



 类似资料:
  • 问题内容: 我正在开发用于访问Redis服务器的Python服务(类)。我想知道如何检查Redis Server是否正在运行。而且如果某种原因我无法连接到它。 这是我的代码的一部分 它打印以下内容 即使我的Redis服务器未运行。 当我发现我的Python代码仅在对redis实例执行 set() 或 get() 时才连接到服务器。 所以我不希望其他服务使用我的类来获得异常说 我想返回正确的消息/错

  • 问题内容: 我们正在使用注册自己的协议的软件。我们可以从浏览器运行应用程序,然后通过如下链接: 但是有没有办法检查用户系统是否支持这种自定义协议?如果不是,我们想请用户先安装软件。 例如: 编辑 我知道关于protocolLong属性,但是它仅在IE中有效。 问题答案: 不幸的是,没有简单的方法来实现这一目标。当然,没有预先确定是否安装协议处理程序的方法。 *正如您所提到的, *Internet

  • 问题内容: 我正在使用node.js进行长时间轮询。 基本上,node.js服务器接受来自用户的请求,然后检查一些更新。如果没有更新,它将在超时后检查它们。 但是,如果用户关闭了他的标签页或转到了另一个页面怎么办?就我而言,脚本继续工作。 当用户中止请求(关闭连接)时,node.js中是否可以检查或检测或捕获事件? 问题答案: 多亏了 Miroshko 和 yojimbo87的 回答,我才能够赶上

  • 问题内容: 我的应用使用,但是较旧的设备(特别是支持iOS 8的iPad 2和3)不支持模糊处理。 我想检查用户设备是否支持模糊。我该怎么做? 问题答案: 有一种看似有希望的内部方法,但是您的应用程序当然会被Apple拒绝。让我们创建自己的方法: 首先,我们需要知道我们正在使用的确切设备类型: 例如,这将返回iPad 2。这是iDevice型号的更新列表:https : //theiphonewi

  • 问题内容: 有没有办法检查当前是否在电话上注册了URL方案…使用javascript? 问题答案: 不是无缝的。但是,有一种类似于检查弹出窗口是否被阻止的方法。 当您尝试不支持的URL方案时,Safari会警告用户它不知道该怎么做,并停留在同一页面上。 因此,如果您给应用程序调用分配了一些激活时间(例如300毫秒),然后执行其他操作以响应该方案的不存在。 它不是最漂亮,但可以工作:

  • 我需要检查FTP服务器是否处于活动状态,此服务器是否: 我尝试了这段代码: 问题是返回以下异常: 如何才能做到这一点呢? 谢谢你