【问题标题】:Java sockets: How to know which version of TLS my SslSocket is currently using? [duplicate]Java 套接字:如何知道我的 SslSocket 当前使用的是哪个版本的 TLS? [复制]
【发布时间】:2020-12-02 11:58:38
【问题描述】:

我的客户拨打服务器。我们最近采用了一项安全策略,只允许 TLS 1.2 连接,但我们对过渡很软弱:如果服务器和客户端无法就 TLS 1.2 套接字达成一致,那么会发出一些警告以解决此问题,但连接应该照常进行。

所以,我并不是真的在寻找一种方法来强制我的客户端只创建 TLS 1.2 连接,而是一种知道当前使用哪个连接的方法。

我的问题是关于如何从实时套接字中获取该信息。

这是我的客户端创建套接字的方式:

public static SSLSocket getSSLsocket (String hostFQDN, int port, String ksFullPath, String ksPassword, String pkPassword) {
    try {
        SSLContext context = SSLContext.getInstance("TLS");
        KeyManagerFactory keyMngFactory = KeyManagerFactory.getInstance("SunX509");
        KeyStore keyStore = KeyStore.getInstance("PKCS12");

        keyStore.load(new FileInputStream(ksFullPath), ksPassword.toCharArray());
        keyMngFactory.init(keyStore, pkPassword.toCharArray());
        context.init(keyMngFactory.getKeyManagers(), null, null);
        //TODO: We are going to need a truststore definition... Meanwhile: System.setProperty("javax.net.ssl.trustStore", "src/resources/certificates/epp/cacertsuk");
        SSLSocketFactory sslScktFactory = context.getSocketFactory();
        return (SSLSocket) sslScktFactory.createSocket(hostFQDN, port);
    } catch (Exception e) {
        throw new RuntimeException("Could not create SSL socket", e);
    }
}

我知道这个问题:How to find what SSL/TLS version is used in Java,其中主要答案似乎是说我可以从 SSLSocket 获取 SSLSession,然后调用 .getProtocol... 但是没有提供有关如何执行此操作的示例,我自己找不到解决方案

【问题讨论】:

  • 嗯...作为答案,该问题引用了我提到的同一问题。缺少代码。虽然,我必须承认这并不是缺少很多代码:)

标签: java sockets ssl tls1.2


【解决方案1】:

啊,我的问题是因为在这个类之上,我使用套接字作为通用对象,可以是纯文本或 SSL...所以,当我尝试执行 socket.getSession 时 - 我没有看到那个方法。 ..

到目前为止,我正在做:

public String getTls () {
    SSLSocket temporaryReference = (SSLSocket) socket;
    SSLSession sslSession = temporaryReference.getSession();
    return sslSession.getProtocol();
}

我得到了:

TLSv1.2

现在,我可以做简单的部分了:)

我意识到这可能不是关于 SO 的最有价值的问题,但它可能对希望做我想做的事情的人有用......无论如何,现在像我这样的凡人无法决定这个问题会发生什么.还是谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 2011-05-15
    • 1970-01-01
    • 2017-10-09
    • 2014-04-08
    • 2019-08-26
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多