AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1093174
Accepted
acgbox
acgbox
Asked: 2022-02-10 06:50:27 +0800 CST2022-02-10 06:50:27 +0800 CST 2022-02-10 06:50:27 +0800 CST

如何禁用 java.security 中的行以避免 javax.net.ssl.SSLHandshakeException?

  • 772

我需要禁用java.security 文件(java 8 SE)中的以下行:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
   DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
   include jdk.disabled.namedCurves

在窗户里

Windows 中的图像。

窗口路径:Program Files\Java\jre1.8.0_301\lib\security\java.security

禁用这些行的目的是避免出现以下错误消息:

Error: javax.net.ssl.SSLHandshakeException: No appropriate protocol 
(protocol is disabled or cipher suites are inappropriate)

以及此处发布的解决方案提案(即对这些行发表评论)。

我不确定在行首 (#) 是否会禁用这两个操作系统的注释。因为这个oracle文档说是//

无论哪个用于注释行,我也不知道是否有必要注释掉所有 3 行,或者只是注释掉第一行禁用所有 3。示例:

这边走:

# jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
   DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
   include jdk.disabled.namedCurves

还是那样?

# jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
#   DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
#   include jdk.disabled.namedCurves

问题:

如何在 Windows 和 Linux 上注释掉(禁用)java.security文件中的前几行以避免“错误:javax.net.ssl.SSLHandshakeException”,或者有人向我解释是否有另一种解决方案,不同于已发布的解决方案

windows java linux
  • 1 1 个回答
  • 775 Views

1 个回答

  • Voted
  1. Best Answer
    dave_thompson_085
    2022-02-12T00:17:48+08:002022-02-12T00:17:48+08:00

    是的,所有系统上的注释字符都是#。您链接的网页是关于 SecurityManager 的安全策略文件(最初是为小程序设计的,现在很少使用);java.security 不是安全策略文件。

    是的,全部 3 行。继续语法(反斜杠-eol)仅适用于未注释的行,因此要注释在多(物理)行上连续的项目,请注释每一行。

    但是,由于您现在明确了协议上的错误,因此只删除有问题的协议(几乎可以肯定是 TLSv1(.0) 和/或 TLSv1.1 —— SSLv3 自 8u31 以来已被禁用)会更安全2015 年它被 POODLE 灾难性地破坏后),剩下的就离开了。

    您是否偶然尝试使用旧版本的 javamail?有一段时间(错误)功能将安全模式默认为 TLSv1(.0)(仅)并在 8u291 和其他几个版本出现时触发此症状;我们有几个关于它的现有问题,只需搜索“javamail 没有适当的协议”。虽然删除或减少 disabledAlgorithms 设置(或回归到 8u291 以下)将允许客户端尝试TLS1.0 连接,但今天许多服务器将不接受它,因为 TLS1.0 被认为已损坏;这就是为什么Java 现在更改为默认禁用它的原因。在这种情况下,最好升级 javamail或显式配置mail.{smtp,imap,pop3}.ssl.protocols为可能适合今天的值TLSv1.2,TLSv1.3。

    (其他)替代方案:通常,您可以将系统属性设置java.security.properties为每个/任何 JVM 分别指向不同(修改的)文件,例如使用-D命令行,而不是更改 JRE/lib/security/java.security 中影响所有 JVM 的内容,或者您可以Security.setProperty()在接近开头的地方充分调用您的代码。

    • 1

相关问题

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve