SSL证书链及使用
什么是证书链
证书链简单来说是域名钥证书、CA公钥、根证书形成的一个颁发链条,属于公钥的一部分。
更白话一点,就是证书链文件包含一系列CA机构公钥的证书。
证书链格式
一般证书链格式是.chain
,证书定义顺序是倒序的,即先权威CA再根CA。
以根CA+一个权威CA举例:
-----BEGIN CERTIFICATE----- 权威CA公钥 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 根CA公钥 -----END CERTIFICATE-----
证书链中也可包含主体与签发信息,仅用于便于确定证书所属不参与认证,举例:
subject=C = CN, O = XXXX, CN = XXXX RSACA issuer=C = CN, O = XXXX, CN = XXXX ROOT RSACA -----BEGIN CERTIFICATE----- 权威CA公钥 -----END CERTIFICATE----- subject=C = CN, O = XXXX, CN = XXXX ROOT RSACA issuer=C = CN, O = XXXX, CN = XXXX ROOT RSACA -----BEGIN CERTIFICATE----- 根CA公钥 -----END CERTIFICATE-----
合并域名证书与证书链
Nginx等web服务器需要将证书链与域名证书合并成PEM文件,作为公钥直接使用。
域名证书内容如下:
-----BEGIN CERTIFICATE----- 域名公钥 -----END CERTIFICATE-----
证书链如下:
-----BEGIN CERTIFICATE----- 权威CA公钥 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 根CA公钥 -----END CERTIFICATE-----
其合并证书链方法,即以 域名证书、权威CA证书、根CA证书 顺序,将证书内容复制到同一文件中。
合并结果如下:
-----BEGIN CERTIFICATE----- 域名公钥 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 权威CA公钥 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 根CA公钥 -----END CERTIFICATE-----
合并出的证书直接作为公钥证书代替证书。
扩展阅读
P7B提取证书链与公钥证书
P7B格式是同时包含证书链和域名公钥证书的,可以通过openssl命令提取。
以下命令输出证书的顺序是不对的,需要按subject和issuer描述调整顺序,域名证书->权威CA->根CA
## p7b可指定PEM或DER格式,也可以经过base64加密 ## 以下列出常见几条命令: # PEM格式未base64 openssl pkcs7 -inform PEM -print_certs -in xxx.p7b -out public.pem # DER格式未base64 openssl pkcs7 -inform DER -print_certs -in xxx.p7b -out public.pem # PEM+base64 base64 -d xxx.p7b | openssl pkcs7 -inform PEM -print_certs -out public.pem # DER+base64 base64 -d xxx.p7b | openssl pkcs7 -inform DER -print_certs -out public.pem
校验PEM证书与密钥是否配套
# 两者输出同样的md5值说明配套 openssl x509 -noout -modulus -in public.pem |openssl md5 openssl rsa -noout -modulus -in private.key |openssl md5
本文作者:东北小狐狸
本文链接:https://www.cnblogs.com/hellxz/p/17803916.html
版权声明:本作品采用自由转载-非商用-非衍生-保持署名 (CC BY-NC-ND 3.0)许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2017-11-01 阻止安卓实体返回键后退的网页js实现