数字签名的“正规性”通常取决于其用途和被信任的程度,以下是两种主要路径:

用于内部或测试的“正规”自签名流程
即使自己签发,遵循标准流程也是“正规”的。
核心步骤:
-
生成私钥
# 生成一个2048位的RSA私钥 openssl genrsa -out private.key 2048 # 更安全的方式:加密私钥(会提示设置密码) openssl genrsa -aes256 -out private_encrypted.key 2048
-
创建证书签名请求
# 根据私钥生成CSR openssl req -new -key private.key -out request.csr
系统会交互式地询问您的组织信息(国家、省份、组织名、通用名等)。通用名 (CN) 对于网站通常是域名,对于代码签名则是公司名。
-
自签名(签发证书)
# 使用自己的私钥对CSR进行签名,生成一个自签名证书 openssl x509 -req -in request.csr -signkey private.key -out certificate.crt -days 365
用途: 内部服务器HTTPS测试、封闭环境设备认证、开发调试。
被公众信任的“正规”CA签名流程
这是最“正规”的方式,证书会被操作系统、浏览器和应用程序广泛信任。
核心步骤:
-
生成私钥和CSR(同上) 同样使用
openssl genrsa和openssl req命令。 -
向证书颁发机构提交CSR
- 将生成的
.csr文件内容提交给全球信任的CA(如 DigiCert, Sectigo, Entrust)或其经销商。 - 根据证书类型(DV-域名验证, OV-组织验证, EV-扩展验证),CA会验证您对域名或组织的所有权。
- 将生成的
-
获取并安装CA签发的证书
- CA验证通过后,会颁发给您一个或多个证书文件(通常是
.crt或.pem文件,可能包含中间证书)。 - 将您的私钥 (
private.key) 和CA颁发的证书链一起配置到服务器或应用程序中。
- CA验证通过后,会颁发给您一个或多个证书文件(通常是
用途: 商业网站HTTPS (https://)、公开发行的软件代码签名、企业邮件签名。
关键概念与最佳实践(确保“正规”)
-
密钥安全是根本
- 绝不要分享私钥。
- 在生产环境中,考虑使用硬件安全模块 (HSM) 或云密钥管理服务来生成和存储私钥,杜绝密钥泄露。
-
算法选择
- RSA 2048位 是目前最通用的。
- ECC (椭圆曲线) 更安全高效(
prime256v1),但需确保所有支持系统都兼容。openssl ecparam -genkey -name prime256v1 -out ecc_private.key
-
签名与验签操作
- 对文件签名:
openssl dgst -sha256 -sign private.key -out signature.bin document.txt
- 验证签名:
openssl dgst -sha256 -verify publickey.pem -signature signature.bin document.txt
(需要先从证书中提取公钥
openssl x509 -pubkey -in certificate.crt -out publickey.pem)
- 对文件签名:
-
证书格式
- PEM: 文本格式,以
-----BEGIN...开头,常见于.pem,.crt,.key文件。 - DER: 二进制格式。
- PFX/P12: 包含私钥和证书链的加密打包格式,用于导入服务器或客户端。
- PEM: 文本格式,以
总结与建议
| 需求场景 | 推荐路径 | 为何“正规” |
|---|---|---|
| 公共网站HTTPS | 向商业CA购买 (DV/OV/EV证书) | 被所有浏览器和操作系统信任,地址栏显示锁标志。 |
| 软件代码签名 | 向CA购买代码签名证书 | 微软Authenticode、苹果公证、Linux内核模块签名的要求,签名后无“未知发布者”警告。 |
| 内部系统或API | 建立私有PKI 或使用自签名证书 | 在可控环境内建立自己的信任链,流程规范即“正规”。 |
| 开发与测试 | 自签名证书 | 流程正确即为正规,是上线前的必要步骤。 |
行动建议:
- 明确用途:您的签名用于何处?(网站、代码、邮件、文档?)
- 确定信任范围:只需要自己和团队信任,还是需要全世界信任?
- 遵循对应路径:
- 需要全球信任 -> 联系证书颁发机构 (CA)。
- 内部使用 -> 严格遵循上述自签名或私有PKI流程,并妥善管理证书生命周期(签发、分发、更新、吊销)。
如果您能提供更具体的应用场景(是为网站签发SSL证书,还是为软件做代码签名),我可以给出更具针对性的指导。