如何将不支持的密码套件(不包含在默认密码套件中)添加到客户端问候消息

2023-11-30

要求客户端应支持以下TLS加密密码套件:

  private String[] cipherSuites = new String[] {
          "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
          "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",
          "TLS_DHE_RSA_WITH_AES_256_CBC_SHA ",
          "TLS_RSA_WITH_AES_256_GCM_SHA384",
          "TLS_RSA_WITH_AES_256_CBC_SHA256",
          "TLS_RSA_WITH_AES_256_CBC_SHA",
          "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
          "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256",
          "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
          "TLS_RSA_WITH_AES_128_GCM_SHA256",
          "TLS_RSA_WITH_AES_128_CBC_SHA256",
      };

这是主要代码:

public static void main(String []args) throws IOException {
        Hashtable<String, String> env = new Hashtable<>();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://10.159.218.169:636/ou=LDAPConfData,ou=Nokia,dc=solution,dc=com");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, "uid=username,ou=People,dc=solution,dc=com");
        env.put(Context.SECURITY_CREDENTIALS, "123456");
        env.put(Context.SECURITY_PROTOCOL, "ssl");
        env.put("java.naming.ldap.factory.socket", CustomSocketFactory.class.getName());

        try {
            InitialDirContext context = new InitialDirContext(env);
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

覆盖套接字工厂:

  @Override
  public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
    SSLSocketFactory sslFact = (SSLSocketFactory)SSLSocketFactory.getDefault();
    SSLSocket sslSocket = (SSLSocket) sslFact.createSocket(host, port);
    sslSocket.setEnabledCipherSuites(cipherSuites);
    return sslSocket;
  }

运行主代码时,会出现异常: 根异常是 java.lang.IllegalArgumentException:当前安装的提供程序无法支持 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

支持的密码套件大小为 56,但只有 4 个需要密码。 是否有什么办法可以解决这个问题?多谢。


该问题是由美国密码出口限制造成的。默认情况下,您不能使用密钥大小为 256 位的密码。

由于一些国家政府的进口管制限制,所提供的管辖政策文件指定可以使用“强”但有限的加密技术。这些文件的“无限强度”版本表明,对于居住在符合条件的国家/地区(即大多数国家/地区)的人们来说,加密强度没有限制。但只有“强”版本才能进口到政府强制实施限制的国家。 JCE 框架将强制执行已安装的管辖策略文件中指定的限制。

要禁用限制,您需要

  • 下载JCE无限强度管辖权

  • 找到并更改为 jre/lib/security 目录

  • 删除 local_policy.jar 和 US_export_policy.jar

  • 放入JCE无限强度jar文件

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

如何将不支持的密码套件(不包含在默认密码套件中)添加到客户端问候消息 的相关文章

随机推荐