【问题标题】:TLSv1.2 not using SHA256 digestTLSv1.2 不使用 SHA256 摘要
【发布时间】:2016-02-15 22:10:32
【问题描述】:

我正在尝试通过 java 客户端连接到 web 服务。我正在使用 JRE 1.6 (IBM):

java version "1.6.0"
Java(TM) SE Runtime Environment (build pwi3260_26sr2fp1-20120622_01(SR2 FP1))
IBM J9 VM (build 2.6, JRE 1.6.0 Windows 7 x86-32 20120618_113791 (JIT enabled, A
OT enabled).

我已在我的代码中指定使用 TLSv1.2 来实现 ssl 安全性。

System.setProperty("javax.net.debug", "ssl");
System.setProperty("https.protocols", "TLSv1.2");

我特别希望在执行握手时使用 SHA256 消息摘要,但是,从下面的日志中我看到没有使用 SHA256。

*** ClientHello, TLSv1.2
RandomCookie:  GMT: 1438792776 bytes = { 179, 7, 242, 221, 47, 208, 29, 106,238, 203, 116, 71, 161, 184, 231, 114, 231, 208, 6, 66, 183, 12, 170, 245, 15, 62, 193, 235 }
Session ID:  {}
Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA,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_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RENEGO_PROTECTION_REQUEST]
Compression Methods:  { 0 }
Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA1withECDSA, SHA1withRSA, SHA256withDSA, SHA1withDSA, MD5withRSA
***

谁能建议我可以做些什么来启用 SHA256?

【问题讨论】:

  • 也许你可以试试 Java 1.5,或者 1.4?哦,等等,它必须是 Java 1.2 :)
  • @Maarten - 我想TLS 1.1 and 1.2 made their debut Java 7。由于低级 JVM,我认为 OP 处于 SSLv3 和 TLS 1.0 领域。
  • 您可以尝试 iSaSiLk 或其他 3rd 方 TLS 库。但请注意,在旧运行时上使用 TLS 可能无法为您提供全面保护。
  • “SHA256 ...在执行握手时使用”是什么意思? ServerKX 和 ClientKX 的签名算法(如果经过身份验证)由 sigalgs 控制(在您的 hello 中提供所有 SHA2),对于 TLSv1.2,PRF 对所有旧套件(包括您列出的套件)使用 HMAC-SHA256。如果您的目标是安全而不是迷恋“256”,那么重要的是 证书 使用 SHA256 或更好的方式进行签名,而这与 ClientHello 的内容无关。
  • @jww OP 使用的是 IBM JRE 而不是 Oracle 的 JRE,IBM 替换了他们自己的加密提供程序,包括 SSL。请注意日志 TLSv1.2 并包括仅存在于1.2 中的signature_algorithms。

标签: java ssl tls1.2


【解决方案1】:

谁能建议我可以做些什么来启用 SHA256?

TLS 1.1 and 1.2 made their debut Java 7。请参阅 Java Cryptography Architecture 中的标题 Cipher Suites 和名为 Default Enabled Cipher Suites 的图表.

如果 IBM 的 JVM 有你需要的东西,它是可用,那么你需要像Which Cipher Suites to enable for SSL Socket 中描述的那样做一些事情来确保它们是启用。虽然不直观,但 availableenabled 在 Java 中是两个不同的东西。

【讨论】:

    猜你喜欢
    • 2022-12-12
    • 1970-01-01
    • 2012-04-17
    • 2019-06-27
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 2015-09-06
    • 2020-12-21
    相关资源
    最近更新 更多