- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 Winstone 服务器在 Windows 上使用 Java 8 运行 Jenkins。我试图确保如果客户端请求未能指定首选密码,服务器会首选 Diffie-Hellman 密码。与 Tomcat 不同,Winstone 似乎没有办法指定密码列表来对它们进行排序。所以,我试图禁用非 DHE 和非 ECDHE 密码。通过指定最小 key 大小和删除 MD2 算法来修改 java.security 文件的禁用算法列表,我已经能够删除其中的一些算法,但无法禁用所有算法。 OpenSSL 将剩余的不需要的密码算法标识为:
AES128-GCM-SHA256
AES128-SHA256
AES128-SHA
EDH-RSA-DES-CBC3-SHA
DES-CBC3-SHA
在 java.security 文件中,我已尝试为 AES、AES128、None、EDH 和 DES 添加各种过滤器,但当我向服务器发出请求时,这些算法仍然显示为已启用。我还尝试删除 legacyAlgorithms 之后的条目。有谁知道什么过滤器值会删除这些?
java.security 片段:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
jdk.tls.disabledAlgorithms=SSLv3, RC4, SSLv2Hello, TLSv1, TLSv1.1
jdk.tls.legacyAlgorithms= \
K_NULL, C_NULL, M_NULL, \
DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
DH_RSA_EXPORT, RSA_EXPORT, \
DH_anon, ECDH_anon, \
RC4_128, RC4_40, DES_CBC, DES40_CBC
最佳答案
java.policy
不执行您描述的操作; java.security
可以。但它只会禁用或限制单个基元和 AFAICT 它不能将非 PFS 作为一个类禁用。
如果您(可以并且确实)给服务器一个 ECDSA 证书(即一个带有 ECC key 和 KU=sign 的证书)而不是一个 RSA 证书,那么只能使用 ECDHE-ECDSA 密码与该证书协商。如果您(同时或相反)给它一个DSA 证书,那么只有 DHE-DSS 密码可以与该证书协商;这可能取决于使用您自己的 CA 或自签名(具有其优点和缺点),因为我还没有找到任何颁发 DSA 证书的公共(public) CA。 Java8 默认 DHE 为 1024 位共享值,现在被认为是安全边界,但您可以使用系统属性更改它,请参阅 How to expand DH key size to 2048 in java 8 .
PS:OpenSSL 称为“EDH”的是 RFC 中的 DHE,实际上是算法 DH,而 OpenSSL 称为“DES-CBC3”的实际上是 {3DES|3DES-EDE|DESEDE}-加拿大广播公司;见Map SSL/TLS cipher suites and their OpenSSL equivalents
关于java - 在 JSSE 中禁用非 DHE 和非 ECDHE 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683034/
我正在尝试做基于客户端服务器的 ssl, 这是我的服务器代码: public static void main(String arg[]){ try { KeyStore keyStore =
我找到了介绍 key 生成步骤的教程。它讲述了以下步骤: keytool -genkey -alias clientprivate -keystore client.private -storetyp
在 Java 中使用 JSSE 和 TLS。我在服务器和客户端之间创建了一个安全套接字。在最终让套接字安全连接之后,我仍然对我现有代码的安全性有一个基本问题。我按照教程中的说明进行操作,有时 Java
我正在用 Java 编写一个客户端(需要在桌面 JRE 和 Android 上工作),用于通过 TLS 承载的专有协议(protocol)(特定于我的公司)。我试图找出用 Java 编写 TLS 客户
JSSE 和 JCE 有什么区别。这两者都涉及广泛情况下的加密。我的问题可能没说清楚。由于 JCE 提供了加密功能,我们可以使用它来加密数据,那么为什么我们需要使用 JSSE 来实现也提供加密功能的安
在使用 Windows 上的自定义信任库将我基于 JSSE 的功能 HttpsURLConnection 实现带到 Android 上遇到各种问题后,我遇到了一些我无法得到答案的问题:(Android
我需要通过我的代理(我相信是隧道)建立一个使用 JSSE 建立的 SSL 连接。是否已经有任何库/属性/方法,或者我必须在低级别实现它? 请注意,只需为我的程序的一个子集定义此代理。我程序中的其他 H
我只是在 java 中收集一些关于 SSL/TSL 的信息,因为我们在使用 netty 时甚至不知道我们当前使用的是什么 TLS 协议(protocol)。我们的应用程序在 Java7 上运行,因此
对于大学安全实验室工作,我必须使用 RMI 创建一个简单的客户端/服务器应用程序。对于客户端和服务器之间的安全通信,我想使用 SSL。 Oracle has example所以我尝试使用它。我得到错误
为我的服务器应用程序使用 BouncyCaSTLe FIPS JSSE 和 TLS 提供程序。 org.bouncycastle bcpkix-fips
我正在使用 JSSE 并具有以下代码: private static void setupServerKeystore() throws GeneralSecurityException, IOExc
我有一个 Java 服务器,它接受使用 JSSE 的 SSL 连接,并在流中使用简单的 XML 消息格式。我希望服务器读取完整的消息然后发送回复。事实证明这非常困难,因为 org.xml.sax.XM
我正在编写一个将 SSLEngine 与 NIO 结合使用的应用程序,我同时编写了客户端和服务器。客户端能够连接到服务器,连接后我希望他能够执行 session 恢复/重新协商,但目前运气不好.. 由
我关注了Hardening your web servers ssl ciphers建议使用的指南 ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+A
我正在编写一个使用 SSLEngine 和 NIO 的应用程序,我编写了客户端和服务器。客户端能够连接到服务器,连接后我希望他能够执行 session 恢复/重新协商,但目前没有运气.. 由于使用 S
如果包含一个或多个 PrivateKeyEntry 的 keystore 被指定为信任库,JSSE 是否会根据每个条目中的最终实体证书创建一个信任 anchor ? 换句话说,如果我们有一个包含可信条
我想在 JSSE 中记录客户端发送的 tls 版本、服务器首选版本、服务器首选密码套件等内容。这个怎么做?请注意,我只能使用 Java 代码来执行此操作。不接受解析日志文件。 最佳答案 您可以将 -D
我们正在使用 Maven 2,并且有一个使用 SSL 客户端身份验证保护的 Maven 存储库管理器。为了让 Maven 访问存储库,必须将以下系统属性传递给 Java: javax.net.ssl.
我正在使用 c#-4.0 开发应用程序和 EntireX Broker 9.5.1 我正在尝试转换为 tpcip 连接以使用 ssl。我成功升级了我的 java由于 Java/Software AG
我正在尝试将 jsse.enableSNIExtension 属性设置为 false,但每次尝试时我都会获得 java 手册。 java -Djsse.enableSNIExtension=false
我是一名优秀的程序员,十分优秀!