MBEDTLS生成的Chrome Reject证书

问题描述

我正在使用mbedtls 2.16.3。 我使用mbedtls库创建两个级别的证书,并使用该证书设置https通信。 根证书(也称为CA)是使用ECC secp256r1的自签名证书。 设备证书由根证书签名,密钥算法也是ECC secp256r1。 我将根证书安装在OS系统和Firefox证书管理器中。 Chrome收到证书后会显示“证书未知”(Chrome版本为86.0.4240.75)

接线盒显示如下: Wireshark caption

显示如下:

NET :: ERR_CERT_INVALID 主题:10.9.1.67 发行者:Web服务器根 过期:2021/10/13 当前日期:2020/10/19 PEM编码链:

----- BEGIN证书----- MIIBejCCAR6gAwIBAgISANm85JYVS9N1992FvOfHxhsAMAwGCCqGSM49BAMCBQAw JzELMAkGA1UEBhMCQ04xGDAWBgNVBAMMD1dlYiBTZXJ2ZXIgUm9vdDAeFw0yMDEw MTYwMTIzMTdaFw0yMTEwMTMwMjQyNDRaMCExCzAJBgNVBAYTAkNomrIwEAYDVQQD DAkxMC45LjEuNjcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATdpywNJKmMvDr2 esvqe9CVhjhQDgzzUo6WhMD91CosNJhkDtkMAbexQkq / je6IQyZABxFkiDMweLWe uJR3rTbNoy4wLDAPBgNVHREECDAGhwQKCQFDMAkGA1UdEwQCMAAwDgYDVR0PAQH / BAQDAgOoMAwGCCqGSM49BAMCBQADSAAwRQIgPRgDnfR7NIXfUlvaUyDtsIJDUGV2 BFKf7wxElxfbKDICIQDpVu5Ty9tZznQeuch + 5LV0vDqXm6EWg + Viv6w5O59QIg == -----结束证书-----

----- BEGIN证书----- MIIBdDCCARigAwIBAgIRfRupqU8vSJw2LfGv1LSuXwAwDAYIKoZIzj0EAwIFADAn MQswCQYDVQQGEwJDTjEYMBYGA1UEAwwPV2ViIFNlcnZlciBSb290MB4XDTIwMTAx NjA5MjMxNloXDTQwMTAxNjA5MjMxNlowJzELMAkGA1UEBhMCQ04xGDAWBgNVBAMM D1dlYiBTZXJ2ZXIgUm9vdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMZaKSeR hoDgIeVbNkBYY0 / n7z4JD + y + bZBXuDsFzYbz4odAe2C3WxpJ7fUw6sOCs1jpy8mv neV1sRH3KXEXqNOjIzAhMA8GA1UdEwQIMAYBAf8CAQAwDgYDVR0PAQH / BAQDAgKE MAwGCCqGSM49BAMCBQADSAAwRQIgPa8BVP5Bt2YLQ3DHEbGsg79nJbtTSAKmAPaa 5NLEIEcCIQCENcnKEdTKV0L / 1c3evynH / hP97mid58trLgBRlFU3Dw == -----结束证书-----

但是该认证在Firefox / Edge上运行良好。

如果我将自签名证书更改为RSA 1024,Chrome中的https连接就可以了。

解决方法

有一个非常快速的解决此问题的方法。 在函数:asn1write.cpp的mbedtls_asn1_write_algorithm_identifier中,只需删除以下代码行:MBEDTLS_ASN1_CHK_ADD(len,mbedtls_asn1_write_null(p,start));