SSL握手失败,Android 7.0支持secp256r1曲线

SSL握手失败,Android 7.0支持secp256r1曲线,android,ssl,nginx,openssl,Android,Ssl,Nginx,Openssl,在将web服务器从Ubuntu 16.04升级到18.04之后,我们开始在一些旧的移动设备上遇到SSL握手错误。 深入挖掘之后,我们注意到了一些事情 面临这一问题的移动设备的操作系统是安卓7.0 在升级Android操作系统时,SSL握手顺利进行 我们在手机上握手时出现的错误是 终止SSL握手:SSL=0x8c78e100:SSL库中出现故障, 通常是协议错误:10000410:SSL 例程:OPENSSL\u内部:SSLV3\u警报\u握手\u失败 (外部/boringssl/src/ssl/

在将web服务器从Ubuntu 16.04升级到18.04之后,我们开始在一些旧的移动设备上遇到SSL握手错误。 深入挖掘之后,我们注意到了一些事情

  • 面临这一问题的移动设备的操作系统是安卓7.0
  • 在升级Android操作系统时,SSL握手顺利进行
  • 我们在手机上握手时出现的错误是

    终止SSL握手:SSL=0x8c78e100:SSL库中出现故障, 通常是协议错误:10000410:SSL 例程:OPENSSL\u内部:SSLV3\u警报\u握手\u失败 (外部/boringssl/src/ssl/s3_pkt.c:610 0x7a7c16e0:0x00000001) 错误:100009a:SSL例程:OPENSSL\u内部:握手\u失败\u在客户端

  • 我们在openresty web服务器上启用调试错误日志时看到的错误是

    SSL_do_handshake()失败(SSL:错误:1417A0C1:SSL 例程:tls\u post\u process\u client\u hello:no shared cipher)而SSL 握手,

  • web服务器配置中列出的ecdh曲线为secp384r1:prime256v1:secp521r1

  • 在客户端helo期间,在Wireshark中看到的Android设备支持的唯一ecdh曲线是secp256r1
  • 据我们所知,prime256v1和secp256r1都是NIST P-256,因此,由于我们支持prime256v1,而android设备支持secp256r1,这应该可以工作,但不能
  • 尝试在web服务器中指定secp256r1时,失败并出现以下错误

    [emerge]SSL\u CTX\u set1\u curves\u list(“secp384r1:prime256v1:secp521r1:secp256r1”) 失败(SSL:)

  • 另外需要注意的是,我们在web服务器中支持TLSv1.2和TLSv1.3

  • 下面是openssl支持的曲线列表

    root@staging-senpiper:/etc/openresty#openssl ecparam-列出曲线
    secp112r1:112位素数字段上的SECG/WTLS曲线 secp112r2:112位素数字段上的SECG曲线
    secp128r1:128位素数字段上的SECG曲线
    secp128r2:128位素数字段上的SECG曲线
    secp160k1:160位素数字段上的SECG曲线
    secp160r1:160位素数字段上的SECG曲线
    secp160r2:160位素数字段上的SECG/WTLS曲线
    secp192k1:192位素数字段上的SECG曲线
    secp224k1:224位素数字段上的SECG曲线
    secp224r1:224位素数字段上的NIST/SECG曲线
    secp256k1:256位素数字段上的SECG曲线
    secp384r1:384位素数字段上的NIST/SECG曲线
    secp521r1:521位素数字段上的NIST/SECG曲线
    prime192v1:192位素数字段上的NIST/X9.62/SECG曲线
    prime192v2:X9.62 192位素数字段上的曲线
    prime192v3:X9.62 192位素数字段上的曲线
    239位素数字段上的素数239v1:X9.62曲线
    prime239v2:X9.62 239位素数字段上的曲线
    239位素数字段上的素数239v3:X9.62曲线
    prime256v1:X9.62/SECG在256位素数字段上的曲线
    sect113r1:113位二进制字段上的SECG曲线
    sect113r2:113位二进制字段上的SECG曲线
    sect131r1:131位二进制字段上的SECG/WTLS曲线
    sect131r2:131位二进制字段上的SECG曲线
    sect163k1:163位二进制字段上的NIST/SECG/WTLS曲线
    sect163r1:163位二进制字段上的SECG曲线
    sect163r2:163位二进制字段上的NIST/SECG曲线
    sect193r1:193位二进制字段上的SECG曲线
    sect193r2:193位二进制字段上的SECG曲线
    sect233k1:233位二进制字段上的NIST/SECG/WTLS曲线
    sect233r1:233位二进制字段上的NIST/SECG/WTLS曲线
    sect239k1:239位二进制字段上的SECG曲线
    sect283k1:283位二进制字段上的NIST/SECG曲线
    sect283r1:283位二进制字段上的NIST/SECG曲线
    sect409k1:409位二进制字段上的NIST/SECG曲线
    sect409r1:409位二进制字段上的NIST/SECG曲线
    sect571k1:571位二进制字段上的NIST/SECG曲线 sect571r1:571位二进制字段上的NIST/SECG曲线
    c2pnb163v1:X9.62 163位二进制字段上的曲线
    c2pnb163v2:X9.62 163位二进制字段上的曲线
    c2pnb163v3:X9.62 163位二进制字段上的曲线
    c2pnb176v1:X9.62 176位二进制字段上的曲线
    c2tnb191v1:X9.62 191位二进制字段上的曲线
    c2tnb191v2:X9.62 191位二进制字段上的曲线
    c2tnb191v3:X9.62 191位二进制字段上的曲线
    c2pnb208w1:X9.62 208位二进制字段上的曲线
    c2tnb239v1:X9.62 239位二进制字段上的曲线
    c2tnb239v2:X9.62 239位二进制字段上的曲线
    c2tnb239v3:X9.62 239位二进制字段上的曲线
    c2pnb272w1:X9.62 272位二进制字段上的曲线
    c2pnb304w1:X9.62 304位二进制字段上的曲线
    c2tnb359v1:X9.62 359位二进制字段上的曲线
    c2pnb368w1:X9.62 368位二进制字段上的曲线
    c2tnb431r1:X9.62 431位二进制字段上的曲线
    wap-wsg-idm-ecid-wtls1:113位二进制字段上的WTLS曲线
    wap-wsg-idm-ecid-wtls3:163位二进制字段上的NIST/SECG/WTLS曲线
    wap-wsg-idm-ecid-wtls4:113位二进制字段上的SECG曲线
    wap-wsg-idm-ecid-wtls5:X9.62 163位二进制字段上的曲线
    wap-wsg-idm-ecid-wtls6:112位素数字段上的SECG/WTLS曲线
    wap-wsg-idm-ecid-wtls7:160位素数字段上的SECG/WTLS曲线
    wap-wsg-idm-ecid-wtls8:112位素数字段上的WTLS曲线
    wap-wsg-idm-ecid-wtls9:160位素数字段上的WTLS曲线
    wap-wsg-idm-ecid-wtls10:233位二进制字段上的NIST/SECG/WTLS曲线
    wap-wsg-idm-ecid-wtls11:233位二进制字段上的NIST/SECG/WTLS曲线
    wap-wsg-idm-ecid-wtls12:224位素数字段上的WTLS曲线
    Oakley-EC2N-3:155位二进制字段上的IPSec/IKE/Oakley曲线#3。不适用于ECDSA。可疑扩展