在 Ubuntu OpenJDK 7 上启用密码

2023-11-27

我编写了以下 Java 程序来转储 JVM 中启用的密码:

import java.security.KeyStore;

import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManagerFactory;

public class ListCiphers
{
    public static void main(String[] args)
    throws Exception
    {
        SSLContext ctx = SSLContext.getInstance("TLSv1");
        // Create an empty TrustManagerFactory to avoid loading default CA
        KeyStore ks = KeyStore.getInstance("JKS");
        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
        tmf.init(ks);
        ctx.init(null, tmf.getTrustManagers(), null);
        SSLSocket socket = (SSLSocket) ctx.getSocketFactory().createSocket("mozilla.org", 443);
        printSupportedCiphers(socket);
        printEnabledCiphers(socket);
    }

    private static void printSupportedCiphers(SSLSocket socket)
    {
        printInfos("Supported cipher suites", socket.getSupportedCipherSuites());
    }

    private static void printEnabledCiphers(SSLSocket socket)
    {
        printInfos("Enabled cipher suites", socket.getEnabledCipherSuites());
    }

    private static void printInfos(String prefix, String[] values)
    {
        System.out.println(prefix + ":");
        for (int i = 0; i < values.length; i++)
            System.out.println("  " + values[i]);
    }
}

当我在 Ubuntu 12.04.3 上使用 openjdk-7-jre/amd64 7u25-2.3.10-1ubuntu0.12.04.2 (/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java )启用调试后,我得到以下输出:

$ /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -Djavax.net.debug=all ListCiphers
trigger seeding of SecureRandom
done seeding SecureRandom
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Supported cipher suites:
  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  TLS_RSA_WITH_AES_256_CBC_SHA256
  TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
  TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
  TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
  TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  TLS_RSA_WITH_AES_256_CBC_SHA
  TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
  TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
  TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  TLS_DHE_DSS_WITH_AES_256_CBC_SHA
  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  TLS_RSA_WITH_AES_128_CBC_SHA256
  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
  TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  TLS_RSA_WITH_AES_128_CBC_SHA
  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
  TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  TLS_DHE_DSS_WITH_AES_128_CBC_SHA
  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  TLS_ECDHE_RSA_WITH_RC4_128_SHA
  SSL_RSA_WITH_RC4_128_SHA
  TLS_ECDH_ECDSA_WITH_RC4_128_SHA
  TLS_ECDH_RSA_WITH_RC4_128_SHA
  TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  SSL_RSA_WITH_3DES_EDE_CBC_SHA
  TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
  TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
  SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
  SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
  SSL_RSA_WITH_RC4_128_MD5
  TLS_EMPTY_RENEGOTIATION_INFO_SCSV
  TLS_DH_anon_WITH_AES_256_CBC_SHA256
  TLS_ECDH_anon_WITH_AES_256_CBC_SHA
  TLS_DH_anon_WITH_AES_256_CBC_SHA
  TLS_DH_anon_WITH_AES_128_CBC_SHA256
  TLS_ECDH_anon_WITH_AES_128_CBC_SHA
  TLS_DH_anon_WITH_AES_128_CBC_SHA
  TLS_ECDH_anon_WITH_RC4_128_SHA
  SSL_DH_anon_WITH_RC4_128_MD5
  TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
  SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
  TLS_RSA_WITH_NULL_SHA256
  TLS_ECDHE_ECDSA_WITH_NULL_SHA
  TLS_ECDHE_RSA_WITH_NULL_SHA
  SSL_RSA_WITH_NULL_SHA
  TLS_ECDH_ECDSA_WITH_NULL_SHA
  TLS_ECDH_RSA_WITH_NULL_SHA
  TLS_ECDH_anon_WITH_NULL_SHA
  SSL_RSA_WITH_NULL_MD5
  SSL_RSA_WITH_DES_CBC_SHA
  SSL_DHE_RSA_WITH_DES_CBC_SHA
  SSL_DHE_DSS_WITH_DES_CBC_SHA
  SSL_DH_anon_WITH_DES_CBC_SHA
  SSL_RSA_EXPORT_WITH_RC4_40_MD5
  SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
  SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
  SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
  SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
  SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
  TLS_KRB5_WITH_RC4_128_SHA
  TLS_KRB5_WITH_RC4_128_MD5
  TLS_KRB5_WITH_3DES_EDE_CBC_SHA
  TLS_KRB5_WITH_3DES_EDE_CBC_MD5
  TLS_KRB5_WITH_DES_CBC_SHA
  TLS_KRB5_WITH_DES_CBC_MD5
  TLS_KRB5_EXPORT_WITH_RC4_40_SHA
  TLS_KRB5_EXPORT_WITH_RC4_40_MD5
  TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA
  TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
Enabled cipher suites:
  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  TLS_RSA_WITH_AES_256_CBC_SHA
  TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
  TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
  TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  TLS_DHE_DSS_WITH_AES_256_CBC_SHA
  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  TLS_RSA_WITH_AES_128_CBC_SHA
  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
  TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  TLS_DHE_DSS_WITH_AES_128_CBC_SHA
  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  TLS_ECDHE_RSA_WITH_RC4_128_SHA
  SSL_RSA_WITH_RC4_128_SHA
  TLS_ECDH_ECDSA_WITH_RC4_128_SHA
  TLS_ECDH_RSA_WITH_RC4_128_SHA
  TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  SSL_RSA_WITH_3DES_EDE_CBC_SHA
  TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
  TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
  SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
  SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
  SSL_RSA_WITH_RC4_128_MD5
  TLS_EMPTY_RENEGOTIATION_INFO_SCSV

我发现奇怪的是调试日志报告某些密码不受支持,但它们仍然报告在由返回的支持列表中getSupportedCiphersSuites().

我的平台有问题吗?


我认为你是对的,警告消息没有帮助。如果你看一下代码sun.security.ssl.SSLContextImpl它的生成位置:

        for (CipherSuite suite : allowedCipherSuites) {
           /* snip */

            if (suite.isAvailable() &&
                    suite.obsoleted > protocols.min.v &&
                    suite.supported <= protocols.max.v) {
              /* snip */
            } else if (debug != null &&
                    Debug.isOn("sslctx") && Debug.isOn("verbose")) {
                if (suite.obsoleted <= protocols.min.v) {
                    System.out.println(
                        "Ignoring obsoleted cipher suite: " + suite);
                } else if (suite.supported > protocols.max.v) {
                    System.out.println(
                        "Ignoring unsupported cipher suite: " + suite);
                } else {
                    System.out.println(
                        "Ignoring unavailable cipher suite: " + suite);
                }
            }
        }

它循环通过allowed密码套件,而不是支持的 ones.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ubuntu OpenJDK 7 上启用密码 的相关文章

随机推荐

  • 当 Bean Validation 抛出 ConstraintViolationException 时自定义 JAX-RS 响应

    Bean 验证是验证对象的一个 不错的选择 但是当ConstraintViolationException被抛出 例如 POST Path company Consumes application json public void save
  • 优化 Lua 的循环执行

    我每 10 毫秒的程序周期执行一次 Lua 脚本 使用相同的 Lua state luaL newstate 在我的应用程序中调用过一次 调用 luaL loadbuffer 肯定会非常快地编译脚本 但似乎没有必要在每次执行脚本时都这样做
  • 函数名称在 bash 中有效,但在 sh 中无效 [重复]

    这个问题在这里已经有答案了 在使用 bash 和 sh 时 我发现以下内容在 bash 中有效 system out println printf 1 但不是在 sh 中 sh system out println not a valid
  • 如何使用 Java 设置 DynamoDB 返回的匹配项的限制?

    在我的 Android 应用程序中 我想从 DynamoDB 查询数据 将会有一千个匹配的项目 但我只想获得其中的前 10 个 我不知道如何设置这个限制 我在文档中找到了这些行 DynamoDB 查询和扫描 API 允许使用限制值来限制结果
  • 忽略转义序列 C++

    我尝试搜索谷歌但找不到答案 谁能告诉我如何忽略存储在 string 中的转义字符 我正在使用一个包含不同字符的数组 如下所示 string str 来自编译器的错误消息 未知转义序列 位于 As Zac has already pointe
  • Inno 设置部分 [Run] 带条件

    我的病情需要帮助 Run 如果它是可能的 我需要运行取决于条件的命令 像这样 if UserPage Values 0 NC then FileName sys inetsrv appcmd exe Parameters set 或者其他方
  • 最大还是默认?

    从可能不返回行的 LINQ 查询获取最大值的最佳方法是什么 如果我只是这样做 Dim x From y In context MyTable Where y MyField value Select y MyCounter Max 当查询未
  • 使用 Python 将流写入 Google Cloud Storage

    我正在尝试迁移AWS Lambda函数写在Python到 CF 那个 即时解压缩并逐行读取 对每条线执行一些灯光变换 将未压缩的输出 一次一行或块 写入 GCS 输出 gt 2GB 但略小于 3GB 因此适合Lambda just 嗯 这似
  • Resttemplate表单/多部分:POST中的图像+ JSON

    我正在尝试调用一个rest ws 使用resttemplate 它接受图像和一些JSON 但是 我似乎无法让它运行 相关代码如下 HttpHeaders header new HttpHeaders header setContentTyp
  • Python 将轴上的日期转换为月份

    我有一个时间序列 我想逐年绘制 我希望数据是每日的 但轴将每月显示为 一月 二月 等 目前我可以获得每日数据 但轴是 1 366 一年中的某一天 或者我可以将每月轴设置为 1 2 3 等 通过将索引更改为 df index month 但数
  • 如何在 Next.js 静态站点生成中获取 URL 查询字符串?

    我想从 Next js 静态站点生成的 URL 获取查询字符串 我在 SSR 上找到了一个解决方案 但我需要一个用于 SSG 的解决方案 Thanks import useRouter from next router import use
  • C# 部署我的应用程序 - 仅从 Web 单击一次

    所以我用 C 开发了我的应用程序 我已准备好部署它 我想让用户始终从我的网站启动它 以便他们始终获得更新 无需安装等 ClickOnce 是执行此操作的正确方法吗 我尝试将 ClickOnce 部署到我的服务器上 但我发现了一些事情 1 用
  • 开源 Telnet Java API

    是否有适用于 Java 的开源 telnet API 库 例如 Python telnetlib 我需要使用 telnet 连接到服务器并从 Java 程序中执行一些命令 我更喜欢使用 Apache Commons Net 库 http c
  • 使用复选框绑定到具有强类型 MVC 视图的布尔列表列表字典

    我正在使用 MVC 4 Net 4 和 Visual Studio 2012 我正在尝试将一个相当复杂的模型与我的观点之一结合使用 但在使其正确绑定方面遇到了严重的困难 该模型用整数键和布尔列表列表值来包装字典 基本上 搜索是对由整数指示的
  • 位字节顺序如何影响 C 中的按位移位和文件 IO?

    Let L and B是两台机器 L订购它的bits从最低有效位 最低有效位 到 MSB 最高有效位 同时B命令 从 MSB 到 LSB 或者 换句话说 L使用 Little Endian 而B使用大尾数法bit 不要与字节排序相混淆 问题
  • 关闭实体框架 CTP5 中的对象缓存

    我无法弄清楚 CTP 5 中实体框架代码优先的内容 它正在缓存对象 但我不希望它这样做 例如 我加载一个加载对象的页面 使用 ASP NET MVC 站点 然后我去更改数据库 我重新加载页面 但更改没有反映出来 如果我终止该网站并重新运行它
  • iOS:键盘出现时禁用 UITableView 动画

    每个人都想在键盘弹出时移动 UITableView 但我正在寻找一种方法来禁用键盘弹出时光标的自动动画 当键盘弹出并导致 UITableView 滚动到光标 以避免阻塞它 时 我遇到了奇怪的抽动 颠簸 不稳定的滚动行为 我的每个 UITab
  • PHP 捕获 SimpleXMLElement 解析错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我有一个脚本可以解析一些 XML adf 内容 有时我
  • 如何在 Play 框架 2.0 (Java) 中重定向到外部 URL

    通过使用控制器中的redirect 方法似乎可以重定向到内部URL public static Result index return redirect routes Application tasks 但是我想重定向到控制器中的外部 UR
  • 在 Ubuntu OpenJDK 7 上启用密码

    我编写了以下 Java 程序来转储 JVM 中启用的密码 import java security KeyStore import javax net ssl KeyManagerFactory import javax net ssl S