一、前提准备:安装 OpenSSL 工具
首先确保系统已安装 OpenSSL,若未安装执行以下命令:
sudo apt-get install openssl
安装完成后,输入 openssl 命令进入交互模式,即可开始后续操作。
二、公钥私钥制作步骤
1. 生成 RSA 私钥(2048 位)
genrsa -out rsa_private_key.pem 2048
说明:生成名为 rsa_private_key.pem 的私钥文件,密钥长度 2048 位(安全性更高,兼容大部分场景)。
2. 转换私钥为 PKCS8 格式(无加密)
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
说明:PKCS8 格式是 Java 等语言常用的私钥格式,-nocrypt 表示不加密私钥(若需加密可移除该参数,生成时需设置密码)。
3. 从私钥提取公钥
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
输出:生成名为 rsa_public_key.pem 的公钥文件,可用于数据加密或签名验证。
三、自定义证书制作(含 PKCS12 格式转换)
1. 生成证书私钥
openssl genrsa -out ryans-key.pem 2048
2. 生成证书签名请求(CSR)
openssl req -new -sha256 -key ryans-key.pem -out ryans-csr.pem
执行后需按提示输入以下参数(示例值):
| 参数项 | 输入内容 | 说明 |
|---|
| 国家 / 地区代码 | CN | 中国缩写 |
| 州 / 省份 | GD | 广东省缩写 |
| 城市 | SZ | 深圳市缩写 |
| 组织名称 | TEST | 企业 / 组织英文名 |
| 部门名称 | Server | 所属部门 |
| Common Name | IoT | 证书绑定的域名 / 标识 |
| 邮箱地址 | test@163.com | 联系邮箱 |
| 密码短语 | test123 | 可选(证书使用时需验证) |
| 公司名称 | Test | 组织全称 |
3. 自签名生成证书(CRT 格式)
openssl x509 -req -in ryans-csr.pem -signkey ryans-key.pem -out ryans-cert.pem
说明:自签名证书适用于测试、内部系统,无需第三方 CA 机构认证。
4. 转换为 PKCS12 格式(PFX/P12)
两种格式均可(后缀不同,用途一致,适用于 Windows/iOS 等系统):
openssl pkcs12 -export -in ryans-cert.pem -inkey ryans-key.pem -certfile ryans-cert.pem -out ryans.pfx
openssl pkcs12 -export -in ryans-cert.pem -inkey ryans-key.pem -certfile ryans-cert.pem -out ryans.p12
说明:PKCS12 格式包含证书和私钥,便于应用直接导入使用。
四、HTTPS 网站证书制作(有效期 10 年)
1. 生成网站私钥
openssl genrsa -out server.key 2048
2. 生成网站 CSR 文件
openssl req -new -key server.key -out server.csr
输入参数与「三、2」一致(示例值):
CN(国家)→ GD(省份)→ SZ(城市)→ TEST(组织)→ Server(部门)→ IoT(域名)→ test@163.com(邮箱)→ test123(密码)→ Test(公司名)
3. 生成 10 年有效期的 HTTPS 证书
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
关键参数:-days 3650 表示证书有效期为 10 年(365 天 / 年 ×10),可根据需求调整天数。
五、注意事项
- 密钥文件(.pem、.key)需妥善保管,避免泄露(私钥泄露可能导致数据安全风险)。
- 自签名证书在浏览器中会提示「不安全」,仅用于测试;生产环境需购买第三方 CA 机构认证的证书(如 Let's Encrypt 免费证书)。
- 若需修改证书参数,可重新生成 CSR 文件并签名,无需重新生成私钥。