文章目录
- 一、生成根证书
- 1. 生成根私钥
- 2. 生成自签名的根证书请求
- 3. 使用私钥签署自签名的根证书
- 二、中间证书生成
- 1. 生成中间私钥
- 2. 生成中间证书请求
- 3. 使用根证书私钥签署中间证书请求
- 4. 验证中间证书
- 三、服务器证书生成
- 1. 生成服务器私钥
- 2. 生成服务器证书请求
- 3. 使用中间证书私钥签署服务器证书请求
- 4. 验证服务器证书
一、生成根证书
生成自签名的根证书(Root Certificate)的过程包括生成私钥、生成自签名的根证书。以下是基于 OpenSSL 的步骤:
1. 生成根私钥
openssl genpkey -algorithm RSA -out root_key.pem
上述命令会生成一个 RSA 算法的私钥文件 root_key.pem
。
2. 生成自签名的根证书请求
openssl req -new -key root_key.pem -out root_csr.pem
在这一步中,你需要提供一些信息,如组织名、组织单位、国家等。最终,它会生成一个自签名的根证书请求文件 root_csr.pem
。
下表列出了执行 openssl req -new -key root_key.pem -out root_csr.pem
时需要填写的一些常见信息及其作用:
Field | Description |
---|---|
Country Name (2 letter code) | 两字母的国家代码,例如 “US”。 |
State or Province Name | 州或省的全名。 |
Locality Name (e.g., city) | 城市或地区的全名。 |
Organization Name (e.g., company) | 公司或组织的全名。 |
Organizational Unit Name (e.g., section) | 部门或单位的全名。 |
Common Name (e.g., your name or your server’s hostname) | 通常是你的服务器的主机名。 |
Email Address | 电子邮件地址,用于证书联系。 |
Challenge Password | 挑战密码(可选)。 |
Optional Company Name | 可选的公司名称。 |
这些信息将用于填写证书请求文件。在实际情况中,一些字段可能不是必需的,具体取决于你的使用场景和证书颁发机构(CA)的要求。通常,“Common Name” 是最重要的字段,应该设置为与你的服务器域名或主机名相匹配的值。其他字段的值可以根据实际情况填写。
3. 使用私钥签署自签名的根证书
openssl x509 -req -in root_csr.pem -signkey root_key.pem -out root_cert.pem
这一步将使用之前生成的私钥 root_key.pem
对自签名的证书请求 root_csr.pem
进行签名,生成最终的根证书 root_cert.pem
。
至此,你已经生成了一个自签名的根证书。请确保妥善保管生成的私钥文件 root_key.pem
,因为它是证书签名的关键。
注意:上述步骤是生成自签名根证书的基本步骤。在实际生产环境中,你可能需要更详细的信息,包括使用配置文件来指定证书信息,设置证书有效期限等。
二、中间证书生成
生成中间证书需要遵循一些类似于生成根证书的步骤。中间证书一般是由根证书签署的。以下是生成中间证书的基本步骤:
1. 生成中间私钥
openssl genpkey -algorithm RSA -out intermediate_key.pem
上述命令会生成一个 RSA 算法的私钥文件 intermediate_key.pem
。
2. 生成中间证书请求
openssl req -new -key intermediate_key.pem -out intermediate_csr.pem
在这一步中,你需要提供一些信息,如组织名、组织单位、国家等。最终,它会生成一个中间证书请求文件 intermediate_csr.pem
。
3. 使用根证书私钥签署中间证书请求
openssl x509 -req -in intermediate_csr.pem -CA root_cert.pem -CAkey root_key.pem -CAcreateserial -out intermediate_cert.pem
这一步将使用根证书 root_cert.pem
和根私钥 root_key.pem
对中间证书请求 intermediate_csr.pem
进行签名,生成中间证书 intermediate_cert.pem
。
4. 验证中间证书
openssl verify -CAfile root_cert.pem intermediate_cert.pem
上述命令用于验证中间证书是否有效,确保它是由根证书签署的。
至此,你已经生成了一个由根证书签署的中间证书。中间证书通常用于构建证书链,形成一个完整的信任链。在实际环境中,你可能还需要考虑中间证书的有效期、使用配置文件来指定证书信息等。
三、服务器证书生成
生成服务器证书的步骤与生成中间证书和根证书类似。服务器证书是由中间证书签署的。以下是生成服务器证书的基本步骤:
1. 生成服务器私钥
openssl genpkey -algorithm RSA -out server_key.pem
上述命令会生成一个 RSA 算法的私钥文件 server_key.pem
。
2. 生成服务器证书请求
openssl req -new -key server_key.pem -out server_csr.pem
在这一步中,你需要提供一些信息,如组织名、组织单位、国家等。最终,它会生成一个服务器证书请求文件 server_csr.pem
。
3. 使用中间证书私钥签署服务器证书请求
openssl x509 -req -in server_csr.pem -CA intermediate_cert.pem -CAkey intermediate_key.pem -CAcreateserial -out server_cert.pem
这一步将使用中间证书 intermediate_cert.pem
和中间私钥 intermediate_key.pem
对服务器证书请求 server_csr.pem
进行签名,生成服务器证书 server_cert.pem
。
4. 验证服务器证书
openssl verify -CAfile intermediate_cert.pem server_cert.pem
上述命令用于验证服务器证书是否有效,确保它是由中间证书签署的。
至此,你已经生成了一个由中间证书签署的服务器证书。这个服务器证书可以用于配置 Web 服务器、TLS/SSL 终端等。在实际环境中,你可能还需要考虑服务器证书的有效期、使用配置文件来指定证书信息等。
DNSNameMatches