由 MBEDTLS 生成的 Chrome 拒绝证书

Posted

技术标签:

【中文标题】由 MBEDTLS 生成的 Chrome 拒绝证书【英文标题】:Chrome Reject certificate generated by MBEDTLS 【发布时间】:2021-01-30 13:05:40 【问题描述】:

我正在使用 mbedtls 2.16.3 。 我使用 mbedtls 库创建二级证书并使用证书设置 https 通信。 根证书(也可以是 CA)是使用 ECC secp256r1 的自签名证书。 设备认证由根证书签名,密钥算法也是ECC secp256r1。 我在 OS 系统和 Firefox 认证管理器中安装了 root 认证。 Chrome收到证书后会显示“Certificate Unknown”(chrome版本为86.0.4240.75)

wireshark 显示如下: Wireshark caption

chrome显示如下:

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

-----开始证书----- MIIBejCCAR6gAwIBAgISANm85JYVS9N1992FvOfHxhsAMAwGCCqGSM49BAMCBQAw JzELMAkGA1UEBhMCQ04xGDAWBgNVBAMMD1dlYiBTZXJ2ZXIgUm9vdDAeFw0yMDEw MTYwMTIzMTdaFw0yMTEwMTMwMjQyNDRaMCExCzAJBgNVBAYTAkNOMRIwEAYDVQQD DAkxMC45LjEuNjcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATdpywNJKmMvDr2 esvqe9CVhjhQDgzzUo6WhMD91CosNJhkDtkMAbexQkq/je6IQyZABxFkiDMweLWe uJR3rTbNoy4wLDAPBgNVHREECDAGhwQKCQFDMAkGA1UdEwQCMAAwDgYDVR0PAQH/ BAQDAgOoMAwGCCqGSM49BAMCBQADSAAwRQIgPRgDnfR7NIXfUlvaUyDtsIJDUGV2 BFKf7wxElxfbKDICIQDpVu5Ty9tZznQeuch+5LV0vDqXm6EWg+Viv6w5O59QIg== -----结束证书-----

-----开始证书----- MIIBdDCCARigAwIBAgIRfRupqU8vSJw2LfGv1LSuXwAwDAYIKoZIzj0EAwIFADAn MQswCQYDVQQGEwJDTjEYMBYGA1UEAwwPV2ViIFNlcnZlciBSb290MB4XDTIwMTAx NjA5MjMxNloXDTQwMTAxNjA5MjMxNlowJzELMAkGA1UEBhMCQ04xGDAWBgNVBAMM D1dlYiBTZXJ2ZXIgUm9vdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMZaKSer hoDgIeVbNkBYY0/n7z4JD+y+bZBXuDsFzYbz4odAe2C3WxpJ7fUw6sOCs1jpy8mv neV1sRH3KXEXqNOjIzAhMA8GA1UdEwQIMAYBAf8CAQAwDgYDVR0PAQH/BA​​QDAgKE MAwGCCqGSM49BAMCBQADSAAwRQIgPa8BVP5Bt2YLQ3DHEbGsg79nJbtTSAKmAPaa 5NLEIEcCIQCENcnKedTKV0L/1c3evynH/hP97mid58trLgBRlFU3Dw== -----结束证书-----

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

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

【问题讨论】:

【参考方案1】:

这个问题有一个非常快速的解决方案。 在函数中:asn1write.cpp的mbedtls_asn1_write_algorithm_identifier,删除这行代码即可:MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_null(p, start));

【讨论】:

以上是关于由 MBEDTLS 生成的 Chrome 拒绝证书的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 mbedtls 验证证书是不是验证密钥?

未使用 mbedTLS+ATECC608A 创建 JITP 证书(与 moquitto_pub 一起使用)

基于MbedTLS的AES加密实现,含STM32H7和STM32F4的实现例程

X.509 DER 格式证书到 PEM 格式

将 X.509 证书的主题名称解析到缓冲区

为本地 HTTP/2 代理生成证书