How to troubleshoot error code 2 and reason code 2400 in IBM JDK 8 and IBM MQ v8 when retrieving messages?

huangapple go评论82阅读模式
英文:

How to troubleshoot error code 2 and reason code 2400 in IBM JDK 8 and IBM MQ v8 when retrieving messages?

问题

我在尝试使用IBM JDK 8和IBM MQ v8检索消息时收到错误代码2和原因代码2400(MQRC_UNSUPPORTED_CIPHER_SUITE)。有人可以帮助我识别代码中的问题吗?

英文:

I am receiving the error code 2 and the reason code 2400 (MQRC_UNSUPPORTED_CIPHER_SUITE) while attempting to retrieve a message using the IBM JDK 8 and IBM MQ v8. Can someone please help me identify the issue with my code?

public static void main(String[] args) {
        int i = 0;
        
        System.setProperty("javax.net.ssl.keyStore", "/home/oracle/cert/jks/cert.jks");
        System.setProperty("javax.net.ssl.keytStorePassword", "changeit");
        //System.setProperty("com.ibm.mq.cfg.useIBMCipherMappings", "false");
        String str1 = "hostname.com";
        String str2 = "1400";
        String str3 = "TEST.1";
        String str4 = "QMG2";
        String str5 = "P.OUT.TRD";
        try {
            MQEnvironment.hostname = "hostname.com";
            MQEnvironment.port = Integer.valueOf(str2).intValue();
            MQEnvironment.channel = str3;
            MQEnvironment.userID = "username";
            MQEnvironment.sslCipherSuite = "SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384";
            MQEnvironment.properties.put("transport", "MQSeries");
            MQQueueManager mQQueueManager = new MQQueueManager(str4);
            System.out.println("Connected to QMGR ");
            byte b = 16;
            MQQueue mQQueue = mQQueueManager.accessQueue(str5, b, null, null, null);
            i = mQQueue.getCurrentDepth();
            System.out.println(i);
            mQQueue.close();
            mQQueueManager.disconnect();
        } catch (MQException mQException) {
            mQException.printStackTrace();
        }
    }
}

I am receiving error code 2 and reason code 2400 while attempting to retrieve a message using the IBM JDK 8 and IBM MQ v8. Can someone please help me identify the issue with my code?

答案1

得分: 1

当程序中指定的密码套件在MQ客户端或Java JRE中都是未知的时候,会出现MQRC_UNSUPPORTED_CIPHER_SUITE错误。

通常的解释是IBM MQ JRE和非IBM JRE之间的密码套件名称不同。请参阅- https://www.ibm.com/support/pages/why-tls-connection-mq-failing-compcode-2-mqccfailed-reason-2400-mqrcunsupportedciphersuite-exception

从上述链接中:

> 要禁用非IBM运行时环境的密码套件映射,必须设置以下Java系统属性:
>
> com.ibm.mq.cfg.useIBMCipherMappings=false
>
> 例如,可以使用JVM参数进行配置:
>
> -Dcom.ibm.mq.cfg.useIBMCipherMappings=false

因为SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384是IBM JRE的CipherSuite名称。很可能在运行应用程序时,您使用的是非IBM JRE。要验证,请添加以下日志记录的等效代码:

        logger.info("在Java " + System.getProperty("java.version") 
                            + " 中运行自 " + System.getProperty("java.vendor"));

我怀疑这不会报告IBM,但如果确实如此,那么对于2400,不太可能有任何服务器日志 (https://www.ibm.com/docs/en/ibm-mq/9.2?topic=problems-tls-troubleshooting#q123400___title__12)

上述链接说2400可能是由于FIPS / 非FIPs不匹配引起的,但由于SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384符合FIPS 140-2,这不太可能是原因。(https://www.ibm.com/docs/en/ibm-mq/9.3?topic=jms-tls-cipherspecs-ciphersuites-in-mq-classes)

英文:

A MQRC_UNSUPPORTED_CIPHER_SUITE arises when
the ciphersuite specified in the program is unknown either at the MQ client or the Java JRE.

The usual explanation is a difference in the ciphersuite names
between the IBM MQ JRE and a non-IBM JRE. See - https://www.ibm.com/support/pages/why-tls-connection-mq-failing-compcode-2-mqccfailed-reason-2400-mqrcunsupportedciphersuite-exception

From the above link:

> To disable the ciphersuite mappings for a non-IBM runtime
> environments, the following Java System Property must be set:
>
> com.ibm.mq.cfg.useIBMCipherMappings=false
>
> For example, this can be configured by using the JVM argument:
>
> -Dcom.ibm.mq.cfg.useIBMCipherMappings=false

As SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384 is an IBM JRE CipherSuite name. The likelihood is that when you are running your application, it is using a non-IBM JRE. To verify add your logging equivalent of

        logger.info("Running under Java " + System.getProperty("java.version") 
                            + " from " + System.getProperty("java.vendor"));

I suspect that that isn't going to report IBM, but if it does then
for a 2400 there are unlikely to be any server logs (https://www.ibm.com/docs/en/ibm-mq/9.2?topic=problems-tls-troubleshooting#q123400___title__12)

The above link says that a 2400 could be caused by a FIPS / non-FIPs mismatch, but as SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384 is FIPS 140-2 compatible, this is unlikely to be the cause. (https://www.ibm.com/docs/en/ibm-mq/9.3?topic=jms-tls-cipherspecs-ciphersuites-in-mq-classes)

答案2

得分: 1

以下是要翻译的内容:

To add to @chughts answer, you can list the supported ciphers of the JVM you are using.

The following code is from https://confluence.atlassian.com/stashkb/list-ciphers-used-by-jvm-679609085.html

I updated the code to included the JVM release information.

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
{
System.out.println("Running under Java " + System.getProperty("java.version")
+ " from " + System.getProperty("java.vendor"));
SSLServerSocketFactory ssf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

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

    TreeMap<String, Boolean> ciphers = new TreeMap<String, Boolean>();

    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());
    }
}

}

I ran it against 3 different JVMs and here is what I got for output:

(1)

Running under Java 1.8.0_341 from IBM Corporation
Default Cipher

  • SSL_DHE_DSS_WITH_AES_128_CBC_SHA
  • SSL_DHE_DSS_WITH_AES_128_CBC_SHA256
  • SSL_DHE_DSS_WITH_AES_128_GCM_SHA256
  • SSL_DHE_DSS_WITH_AES_256_CBC_SHA
  • SSL_DHE_DSS_WITH_AES_256_CBC_SHA256
  • SSL_DHE_DSS_WITH_AES_256_GCM_SHA384
  • SSL_DHE_RSA_WITH_AES_128_CBC_SHA
  • SSL_DHE_RSA_WITH_AES_128_CBC_SHA256
  • SSL_DHE_RSA_WITH_AES_128_GCM_SHA256
  • SSL_DHE_RSA_WITH_AES_256_CBC_SHA
  • SSL_DHE_RSA_WITH_AES_256_CBC_SHA256
  • SSL_DHE_RSA_WITH_AES_256_GCM_SHA384
  • SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA
  • SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
  • SSL_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
  • SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA
  • SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
  • SSL_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
  • SSL_ECDH_RSA_WITH_AES_128_CBC_SHA
  • SSL_ECDH_RSA_WITH_AES_128_CBC_SHA256
  • SSL_ECDH_RSA_WITH_AES_128_GCM_SHA256
  • SSL_ECDH_RSA_WITH_AES_256_CBC_SHA
  • SSL_ECDH_RSA_WITH_AES_256_CBC_SHA384
  • SSL_ECDH_RSA_WITH_AES_256_GCM_SHA384
  • SSL_RSA_WITH_AES_128_CBC_SHA
  • SSL_RSA_WITH_AES_128_CBC_SHA256
  • SSL_RSA_WITH_AES_128_GCM_SHA256
  • SSL_RSA_WITH_AES_256_CBC_SHA
  • SSL_RSA_WITH_AES_256_CBC_SHA256
  • SSL_RSA_WITH_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
    TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
    TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
    TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_EMPTY_RENEGOTIATION_INFO_SCSV

(2)

Running under Java 1.8.0_201 from Oracle Corporation
Default Cipher

  • TLS_DHE_DSS_WITH_AES_128_CBC_SHA
  • TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
  • TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
  • TLS_DHE_DSS_WITH_AES_256_CBC_SHA
  • TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
  • TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDH_ECDSA_WITH_AES_
英文:

To add to @chughts answer, you can list the supported ciphers of the JVM you are using.

The following code is from https://confluence.atlassian.com/stashkb/list-ciphers-used-by-jvm-679609085.html

I updated the code to included the JVM release information.

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
    {
        System.out.println(&quot;Running under Java &quot; + System.getProperty(&quot;java.version&quot;)
                            + &quot; from &quot; + System.getProperty(&quot;java.vendor&quot;));
        SSLServerSocketFactory ssf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

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

        TreeMap&lt;String, Boolean&gt; ciphers = new TreeMap&lt;String, Boolean&gt;();

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

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

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

            if(Boolean.TRUE.equals(cipher.getValue()))
                System.out.print(&#39;*&#39;);
            else
                System.out.print(&#39; &#39;);

            System.out.print(&#39;\t&#39;);
            System.out.println(cipher.getKey());
        }
    }
}

I ran it against 3 different JVMs and here is what I got for output:

(1)

Running under Java 1.8.0_341 from IBM Corporation
Default	Cipher
*	SSL_DHE_DSS_WITH_AES_128_CBC_SHA
*	SSL_DHE_DSS_WITH_AES_128_CBC_SHA256
*	SSL_DHE_DSS_WITH_AES_128_GCM_SHA256
*	SSL_DHE_DSS_WITH_AES_256_CBC_SHA
*	SSL_DHE_DSS_WITH_AES_256_CBC_SHA256
*	SSL_DHE_DSS_WITH_AES_256_GCM_SHA384
*	SSL_DHE_RSA_WITH_AES_128_CBC_SHA
*	SSL_DHE_RSA_WITH_AES_128_CBC_SHA256
*	SSL_DHE_RSA_WITH_AES_128_GCM_SHA256
*	SSL_DHE_RSA_WITH_AES_256_CBC_SHA
*	SSL_DHE_RSA_WITH_AES_256_CBC_SHA256
*	SSL_DHE_RSA_WITH_AES_256_GCM_SHA384
*	SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
*	SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
*	SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
*	SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
*	SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
*	SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
*	SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA
*	SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256
*	SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256
*	SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA
*	SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384
*	SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384
*	SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA
*	SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
*	SSL_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
*	SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA
*	SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
*	SSL_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
*	SSL_ECDH_RSA_WITH_AES_128_CBC_SHA
*	SSL_ECDH_RSA_WITH_AES_128_CBC_SHA256
*	SSL_ECDH_RSA_WITH_AES_128_GCM_SHA256
*	SSL_ECDH_RSA_WITH_AES_256_CBC_SHA
*	SSL_ECDH_RSA_WITH_AES_256_CBC_SHA384
*	SSL_ECDH_RSA_WITH_AES_256_GCM_SHA384
*	SSL_RSA_WITH_AES_128_CBC_SHA
*	SSL_RSA_WITH_AES_128_CBC_SHA256
*	SSL_RSA_WITH_AES_128_GCM_SHA256
*	SSL_RSA_WITH_AES_256_CBC_SHA
*	SSL_RSA_WITH_AES_256_CBC_SHA256
*	SSL_RSA_WITH_AES_256_GCM_SHA384
*	TLS_AES_128_GCM_SHA256
*	TLS_AES_256_GCM_SHA384
*	TLS_CHACHA20_POLY1305_SHA256
 	TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
 	TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
 	TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
*	TLS_EMPTY_RENEGOTIATION_INFO_SCSV

(2)

Running under Java 1.8.0_201 from Oracle Corporation
Default	Cipher
*	TLS_DHE_DSS_WITH_AES_128_CBC_SHA
*	TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
*	TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
*	TLS_DHE_DSS_WITH_AES_256_CBC_SHA
*	TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
*	TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
*	TLS_DHE_RSA_WITH_AES_128_CBC_SHA
*	TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
*	TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
*	TLS_DHE_RSA_WITH_AES_256_CBC_SHA
*	TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
*	TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
*	TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
*	TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
*	TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
*	TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
*	TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
*	TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
*	TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
*	TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
*	TLS_RSA_WITH_AES_128_CBC_SHA
*	TLS_RSA_WITH_AES_128_CBC_SHA256
*	TLS_RSA_WITH_AES_128_GCM_SHA256
*	TLS_RSA_WITH_AES_256_CBC_SHA
*	TLS_RSA_WITH_AES_256_CBC_SHA256
*	TLS_RSA_WITH_AES_256_GCM_SHA384

(3)

Running under Java 17.0.7 from Oracle Corporation
Default	Cipher
*	TLS_AES_128_GCM_SHA256
*	TLS_AES_256_GCM_SHA384
*	TLS_CHACHA20_POLY1305_SHA256
*	TLS_DHE_DSS_WITH_AES_128_CBC_SHA
*	TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
*	TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
*	TLS_DHE_DSS_WITH_AES_256_CBC_SHA
*	TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
*	TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
*	TLS_DHE_RSA_WITH_AES_128_CBC_SHA
*	TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
*	TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
*	TLS_DHE_RSA_WITH_AES_256_CBC_SHA
*	TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
*	TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
*	TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
*	TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
*	TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
*	TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
*	TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
*	TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
*	TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
*	TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
*	TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
*	TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
*	TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
*	TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
*	TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
*	TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
*	TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
*	TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
*	TLS_EMPTY_RENEGOTIATION_INFO_SCSV
*	TLS_RSA_WITH_AES_128_CBC_SHA
*	TLS_RSA_WITH_AES_128_CBC_SHA256
*	TLS_RSA_WITH_AES_128_GCM_SHA256
*	TLS_RSA_WITH_AES_256_CBC_SHA
*	TLS_RSA_WITH_AES_256_CBC_SHA256
*	TLS_RSA_WITH_AES_256_GCM_SHA384

huangapple
  • 本文由 发表于 2023年6月1日 17:02:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/76380287.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定