Self-Signed Certificate
Table of Contents
自签名证书(Self-Signed Certificate)本质上并不依赖于外部的证书颁发机构(CA),因为它本身就是自己的 CA。换句话说,自签名证书的签发者(Issuer)和使用者(Subject)是同一个实体。
自签名证书的特点
-
Issuer 与 Subject 相同
- 自签名证书自己签署自己,所以在证书的
Issuer
和Subject
字段中,都会看到相同的内容。 - 示例:
Issuer: CN=MyRootCA, O=My Organization, C=US Subject: CN=MyRootCA, O=My Organization, C=US
- 自签名证书自己签署自己,所以在证书的
-
没有外部验证
- 它的合法性完全依赖于你自己信任它,而不是通过第三方 CA 的认证。
- 使用时需要将自签名证书显式添加到“受信任证书”列表中。
-
用途
- 开发、测试环境。
- 小型闭环系统(如内网)。
- 为 CA 系统创建根证书(自签名证书可以成为其他证书的信任根)。
自签名证书的 CA 功能
一个自签名证书可以充当根 CA 证书,从而签发其他子证书(如服务器证书)。具体步骤如下:
-
生成自签名证书
- 使用
openssl
或类似工具生成密钥对。 - 自己使用私钥对证书内容进行签名,生成自签名证书。
- 使用
-
签发其他证书
- 自签名证书作为“CA”,用它的私钥签署 CSR(证书签名请求),从而生成子证书。
如何生成自签名证书
以下以 OpenSSL 为例,生成一个自签名证书:
步骤 1:生成私钥
openssl genrsa -out myrootca.key 2048
- 生成一个 2048 位的 RSA 私钥文件
myrootca.key
。
步骤 2:生成自签名证书
openssl req -x509 -new -nodes -key myrootca.key -sha256 -days 3650 -out myrootca.crt
-
参数说明:
-x509
: 生成自签名证书。-new
: 创建新证书。-key
: 使用之前生成的私钥签署证书。-days 3650
: 设置证书有效期为 10 年。-out
: 输出自签名证书文件myrootca.crt
。
-
运行时会提示输入证书信息:
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:California Locality Name (eg, city) []:San Francisco Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Organization Organizational Unit Name (eg, section) []:IT Department Common Name (e.g. server FQDN or YOUR name) []:MyRootCA Email Address []:admin@example.com
如何验证和使用自签名证书
验证自签名证书
- 自签名证书不依赖其他 CA,因此没有“证书链”。
- 可以通过以下命令验证:
openssl verify -CAfile myrootca.crt myrootca.crt
输出:
myrootca.crt: OK
信任自签名证书
- 要在系统或应用中使用自签名证书,必须将它添加到“受信任的根证书”列表中。
- Linux:
- 将
myrootca.crt
复制到/etc/ssl/certs/
并运行update-ca-certificates
。 - Windows:
- 使用
mmc
工具导入证书到“受信任的根证书颁发机构”。 - 浏览器:
- 手动导入到浏览器的“证书管理”中。
签发其他证书
使用自签名证书作为 CA,可以签发子证书。以下是简单流程:
-
生成服务器私钥和 CSR
openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr
-
签署子证书
openssl x509 -req -in server.csr -CA myrootca.crt -CAkey myrootca.key -CAcreateserial -out server.crt -days 365 -sha256
-CA myrootca.crt
: 指定 CA 证书。-CAkey myrootca.key
: 指定 CA 的私钥。-CAcreateserial
: 自动生成序列号文件myrootca.srl
。
自签名证书的局限性
-
不适用于生产环境
- 因为不被公共 CA 信任,浏览器或操作系统会显示“不安全连接”的警告。
-
需手动管理信任
- 任何使用该证书的系统都必须手动导入并信任它。
-
易遭伪造
- 缺乏第三方验证,自签名证书不提供真正的身份验证。
总结
- 自签名证书本身就充当“CA 证书”,无需额外的 CA 支持。
- 适用于测试或封闭环境,开发者可以轻松生成和使用。
- 若需要在生产环境中使用,推荐使用公共 CA 签发的受信任证书。
如果还有更多问题或需要具体指导,请随时提问!
Comments |0|
Category: 似水流年