CA 证书和普通证书、自签名证书的区别

目前CA中心颁发的证书,都有一些扩展项属性,用来限定证书的用途、提供颁发者信息、以及CRL的下载地址等等。在下图中,红色区域内的属性都为证书的扩展属性。https://technet.microsoft.com/zh-cn/library/cc754305.aspx
其中有一个扩展属性——"基本约束",结构体定义如下:

typedef struct BASIC_CONSTRAINTS_st {
int ca;
ASN1_INTEGER *pathlen;
} BASIC_CONSTRAINTS;
其中:
  • 第一个成员ca,表明该证书可否作为CA证书签发下一级证书,一般用户证书该值都为0。
  • 第二个参数pathlen,只有当ca=1时才有效,表明具体可以签发的证书级别。
这是一个ca证书。

-selfsign 使用对证书请求进行签名的密钥对来签发证书。即"自签名"。服务器使用CA证书Firefox不会承认

证书(certificate)和证书请求(certificate sign request)
  • 证书是自签名或CA签名过的凭据,用来进行身份认证
  • 证书请求是对签名的请求,需要使用私钥进行签名