当前位置: 首页 > 知识库问答 >
问题:

Java应用程序上不支持的曲线:1.2.840.10045.3.1.7

罗鸿福
2023-03-14
Caused by: javax.net.ssl.SSLHandshakeException:
    Unsupported curve: 1.2.840.10045.3.1.7
Alpine Linux 3.5 on a Docker container
OpenJDK 1.8.0_111
Wildfly 10.1.0.Final
    null
    null

在我的Alpine Linux安装上有什么建议来解决这个问题吗?

共有1个答案

郎同化
2023-03-14

TL,Dr:Alpine的OpenJDK 8包不支持使用椭圆曲线的密码,比如ECDHE。在Java选项上使用-dcom.sun.net.ssl.enableecc=false,请求OpenJDK不要使用这样的密码。

这篇很好的Atlassian论文描述了如何使用以下代码从JVM列出所有默认和可用的密码:

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import javax.net.ssl.SSLServerSocketFactory;

public class Ciphers
{
    public static void main(String[] args)
        throws Exception
    {
        SSLServerSocketFactory ssf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

        String[] defaultCiphers = ssf.getDefaultCipherSuites();
        String[] availableCiphers = ssf.getSupportedCipherSuites();

        TreeMap ciphers = new TreeMap();

        for(int i=0; i<availableCiphers.length; ++i )
            ciphers.put(availableCiphers[i], Boolean.FALSE);

        for(int i=0; i<defaultCiphers.length; ++i )
            ciphers.put(defaultCiphers[i], Boolean.TRUE);

        System.out.println("Default\tCipher");
        for(Iterator i = ciphers.entrySet().iterator(); i.hasNext(); ) {
            Map.Entry cipher=(Map.Entry)i.next();

            if(Boolean.TRUE.equals(cipher.getValue()))
                System.out.print('*');
            else
                System.out.print(' ');

            System.out.print('\t');
            System.out.println(cipher.getKey());
        }
    }
}

在Alpine 3.5中的OpenJDK 8上运行这段代码不会列出任何ECDHE密码,相反,这段代码列出了安装在Centos7中的OpenJDK 8中的几个这样的密码。

 类似资料:
  • 我一直在研究如何开发一个可以加载插件的应用程序。到目前为止,我已经看到,这可以通过定义一个接口并让插件实现来实现。 然而,我目前的问题是当插件被打包在罐子里时如何加载它们。有“最好”的方法吗? 我现在考虑的逻辑是让每个插件在它们的Jar中寻找实现接口的类。但我不知道怎么做这样的查找。我认为这个逻辑可能不是一个好的逻辑,但我找不到任何关于这个特定主题的有用信息。 **编辑1:**添加更多信息:预期的

  • 我的应用程序不支持下一代java插件,但在我的一个文档中,我看到了调试此应用程序的步骤,以设置jvm运行时参数为-Xdebug-Xrunjdwp:传输=dt_socket,地址=8000,服务器=y,挂起=y。 现在的问题是与此参数Internet Explorer是不是崩溃或挂起没有加载任何东西。一旦删除此参数解决了这个问题,应用程序运行正常。 那么,是否可以使用其他参数调试该应用程序?我也尝试

  • 源代码: 工作流程:当我点击一个linkbutton(客户端访问)时,它会弹出一个窗口,这是一个登录窗口(框架),我们可以在这里输入用户id和密码。 我编写的代码: driver.findElement(by.id(“ClientBtnDropDown”)).Click() 这里是抛出错误,比如不支持click方法。 是我做错了什么,还是有别的办法?

  • 由于我使用多个环境,我计划将App Insights检测键作为azure portal APP_SETTING的系统属性传递(值作为)。 我添加了所需的Maven依赖项,并且我的的App Insight instrumentation键引用为: 但不管用。当我直接硬编码密钥时,它起作用了。 在Spring中有没有具体的方法来引用系统属性以获取应用程序的洞察?

  • 目前,我有一个多线程java应用程序,它使用部署在weblogic server 11g中的3个线程。但当应用程序运行时,我只能看到weblogic控制台中有一个运行执行线程。 有人能解释一下我的应用程序线程和weblogic中的执行线程之间是否有任何区别吗?

  • 对于hibernate,我在耳边添加了以下jar:hibernate-commons-annotations-4.0.5.final.jar、hibernate-core-4.3.11.final.jar和hibernate-entitymanager-4.3.11.final.jar。 对于seam,我包含了seam jar:jboss-seam.jar、jboss-seam-debug.jar