在iOS设备中,当用户下载并安装一个应用程序时,系统会自动检查该应用程序是否有可信的数字签名。这个数字签名是由苹果公司颁发的证书所提供的,用于验证该应用程序是否来自于可信的开发者,并且没有被篡改过。
苹果公司为了保障用户的安全,采取了多重验证措施,其中之一就是在应用程序安装后再次验证其证书的有效性。这个过程被称为“证书链验证”。
证书链验证的原理是:在苹果公司的证书信任列表中,根证书是最高级别的证书,用于签署下级证书的证书。当用户下载并安装一个应用程序时,系统会验证该应用程序的证书是否由一个根证书签署的。如果是,则该证书是被信任的,应用程序可以被启动和运行。如果不是,则系统会终止该应用程序的运行并提示用户该应用程序是不安全的。
除了根证书之外,苹果公司还会颁发中间证书,用于签署下一级证书。这样就形成了一个证书链,包含了根证书、中间证书和应用程序的证书。系统在验证应用程序的证书时,会沿着证书链依次验证每一个证书的有效性。
苹果公司采取证书链验证的原因是为了防止应用程序开发者使用自签名的证书来欺骗用户。如果开发者使用自签名的证书,那么系统会在验证证书链时发现该证书无法验证,从而拒绝启动该应用程序。
此外,苹果公司还会定期更新证书信任列表,包括添加新的根证书和中间证书、废除不安全的证书等。这样可以保证证书链验证的安全性和有效性。
综上所述,苹果证书验证后又要再次验证的原因是为了保障用户的安全和应用程序的完整性。采取证书链验证的措施可以防止应用程序开发者使用不受信任的证书来欺骗用户,保证用户下载和安装的应用程序是安全可信的。