【发布时间】:2020-06-06 13:07:27
【问题描述】:
我有根证书、中间证书和叶子证书。
如果我将所有这些证书固定在我的移动应用程序中,那么假设leaf 证书已过期。
但是连接仍然会被接受,因为中间证书和根证书已经被固定了。
如果有人发送的不是我过期的叶证书但由相同的中间证书或根证书签名的不同证书怎么办?
由于根证书和中间证书在这个不同的证书中也相同,连接是否仍然建立?
【问题讨论】:
标签: ssl https ssl-certificate tls1.2
我有根证书、中间证书和叶子证书。
如果我将所有这些证书固定在我的移动应用程序中,那么假设leaf 证书已过期。
但是连接仍然会被接受,因为中间证书和根证书已经被固定了。
如果有人发送的不是我过期的叶证书但由相同的中间证书或根证书签名的不同证书怎么办?
由于根证书和中间证书在这个不同的证书中也相同,连接是否仍然建立?
【问题讨论】:
标签: ssl https ssl-certificate tls1.2
使用的固定有多种类型:
如果我将所有这些证书固定在我的移动应用程序中,那么假设叶证书已过期。
但是连接仍然会被接受,因为中间证书和根证书已经固定。
如果已完成对叶证书的固定,则仅当固定中没有其他约束(特别是检查过期)时,它才会接受过期的证书。
如果有人发送了一个不同的证书,不是我过期的叶子证书,但它是由相同的中间证书或根证书签名的?
如果针对特定叶证书进行了锁定,则无论是否针对 CA 证书进行了锁定,它都不会接受任何其他证书作为叶证书。这个想法是满足所有要求,而不仅仅是一些要求。
如果只是固定到 CA 证书,则将完成正常的证书验证(特别是该主题与预期域匹配),此外还将检查固定的 CA 是否在信任路径中。
【讨论】:
我使用 ClientChannel 的 setTrustedCertificates 方法在 dart 应用程序中测试了固定 SSL 证书(以 pem 文件形式的证书)。
在以下情况下成功建立连接:
连接失败,出现 CERTIFICATE_VERIFY_FAILED 错误:
【讨论】: