SSL的CA证书可分为两种:Root CA(根CA证书)和Intermediate CA(中间CA证书)。其中Root CA是信任锚点,一条证书链中只能有一个。Intermediate CA可以有多个。Root CA通常不直接签发用户证书,而是签发Intermediate CA,由Intermediate CA来签发终用户书。它们之间的关系如下图所示:
证书链就是Root CA签发二级Intermediate CA,二级Intermediate CA可以签发三级Intermediate CA,也可以直接签发用户证书。从Root CA到用户证书之间构成了一个信任链:信任Root CA,就应该信任它所信任的二级Intermediate CA,从而就应该信任三级Intermediate CA直至信任用户证书。
客户的系统或浏览器上会默认安装多个知名的Root CA,在SSL Handshake过程中Server需要将证书链发送给Client(通常是浏览器),Client使用Root CA逐级对证书进行验证,直至验证Server的用户证书。
#!/bin/bash
set -e
dir=`dirname $0`
key