工具简介
证书签名请求(CSR)是获取 SSL/TLS 证书的第一步。为网站配置 HTTPS 时,需要先生成 CSR 文件,再提交给证书颁发机构签名。
在线 CSR 生成器让这个过程更简单,也更安全:
- 完全在本地处理:CSR 全部在浏览器中生成,私钥不会离开你的设备
- 支持多种算法:支持 RSA(2048/3072/4096 位)和 ECDSA(P-256/P-384/P-521)签名算法
- 配置灵活:可以添加多个域名(SAN)、通配符域名等
- 无需安装:不必安装 OpenSSL 或其他命令行工具,直接在浏览器中生成 CSR
安全提示
使用 CSR 生成器时,私钥和 CSR 都在浏览器本地生成,不会上传到任何服务器。此工具可以完全离线使用。
什么时候需要生成 CSR?
以下情况需要生成 CSR:
- 购买新的 SSL 证书:首次为域名申请 SSL/TLS 证书
- 为即将到期的证书续期:现有证书即将到期,需要重新生成
- 更改域名信息:需要修改证书中的域名或组织信息
- 密钥可能泄露:如果怀疑私钥泄露,应立即生成新的密钥对和 CSR
如何为 CSR 选择哈希算法
哈希算法用于为证书创建数字签名。选择合适的哈希算法对证书安全很重要。此 CSR 生成器支持三种主流哈希算法:
SHA-256(建议)
SHA-256 是目前使用最广的哈希算法,在安全性和性能之间最均衡:
- 安全性:输出 256 位,足以抵御目前已知的攻击
- 兼容性:现代浏览器和操作系统都支持
- 性能:计算速度快,适合大多数场景
- 建议用途:99% 的情况都应选择它
SHA-384
SHA-384 安全性更高,计算开销也略大:
- 安全性:输出 384 位,安全余量更大
- 适用场景:金融、医疗等对安全要求极高的行业
- 兼容性:现代系统都支持
SHA-512
SHA-512 提供最高级别的安全性:
- 安全性:输出 512 位,安全保证最强
- 性能影响:计算和验证相对更慢
- 适用场景:只有极少数有特殊安全要求的场合需要它
建议
对绝大多数用户,建议使用 SHA-256。除非有特殊合规要求,SHA-256 已经足够安全。
如何为 CSR 选择签名算法
在线生成 CSR 时需要选择签名算法。主要有两种:RSA 和 ECDSA。
RSA 算法
RSA 是最传统、使用最广的签名算法:
优点:
- 兼容性广:几乎所有设备和浏览器都支持,包括旧系统
- 成熟稳定:经过数十年实际使用验证
- 证书颁发机构普遍支持:所有证书颁发机构都支持
缺点:
- 密钥较长:通常需要 2048 位或 4096 位才能保证安全
- 性能开销:加密和解密相对较慢
- 证书较大:生成的证书文件更大
建议的密钥长度:
- 2048 位:标准选择,安全且性能好,适合大多数场景
- 4096 位:安全性更高,但性能影响明显,适合高安全要求
ECDSA 算法
ECDSA(椭圆曲线数字签名算法)是更现代的选择:
优点:
- 密钥更短:256 位 ECDSA 密钥的安全性约相当于 3072 位 RSA 密钥
- 性能好:签名生成和验证更快
- 节省带宽:证书更小,传输更快
- 适合移动设备:更适合资源有限的设备
缺点:
- 兼容性:部分旧系统可能不支持(例如 Windows XP、Android 4.x 及更早版本)
- 证书颁发机构支持:部分证书颁发机构可能不支持,或会额外收费
建议的曲线:
- P-256(secp256r1):标准选择,支持广泛
- P-384(secp384r1):安全级别更高
应该选哪一个?
建议:RSA 2048
如果网站需要覆盖所有用户(包括使用旧设备的用户),RSA 2048 位是最稳妥的选择。可以用在线 CSR 生成工具轻松创建 RSA 证书签名请求。
建议:ECDSA P-256
移动应用通常对性能和带宽更敏感。ECDSA 体积小、性能高,是合适的选择。现代移动设备都支持 ECDSA。
建议:RSA 2048 或更长
企业环境可能需要支持多种操作系统版本,RSA 的兼容性优势更明显。如果有特殊安全要求,可以选择 RSA 4096。
建议:ECDSA P-256
API 服务通常由现代客户端调用,可以充分利用 ECDSA 的性能优势,缩短 TLS 握手时间。
如何使用 OpenSSL 生成 CSR
在线 CSR 生成器已经很方便,了解如何用命令行生成 CSR 仍然有用。OpenSSL 是最常用的命令行工具。
RSA 证书签名请求
# Generate 2048-bit RSA private key and CSR
openssl req -new -newkey rsa:2048 -nodes \
-keyout domain.key \
-out domain.csr
# Generate 4096-bit RSA private key and CSR
openssl req -new -newkey rsa:4096 -nodes \
-keyout domain.key \
-out domain.csr执行后,系统会提示输入以下信息:
- Country Name(国家或地区代码,例如 US)
- State or Province(省或州)
- Locality Name(城市)
- Organization Name(组织名称)
- Organizational Unit(部门)
- Common Name(域名,例如 autossl.dev)
- Email Address(可选)
先创建配置文件 csr.conf:
# Request configuration section
[req]
default_bits = 2048 # RSA key size in bits
prompt = no # Disable interactive prompts
default_md = sha256 # Hash algorithm for signature
distinguished_name = dn # Reference to DN section below
req_extensions = req_ext # Reference to extensions section
# Distinguished Name (certificate subject information)
[dn]
C = US # Country code
ST = California # State or Province
L = San Francisco # Locality (city)
O = Example Company # Organization name
CN = autossl.dev # Common Name (primary domain)
# Request extensions (additional certificate attributes)
[req_ext]
subjectAltName = @alt_names # Reference to alternative names section
# Subject Alternative Names (additional domains for this certificate)
[alt_names]
DNS.1 = autossl.dev # Primary domain
DNS.2 = www.autossl.dev # Subdomain with www
DNS.3 = *.autossl.dev # Wildcard for all subdomains然后生成 CSR:
openssl req -new -nodes \
-newkey rsa:2048 \
-keyout domain.key \
-out domain.csr \
-config csr.confopenssl req -new -newkey rsa:2048 -nodes \
-keyout domain.key -out domain.csr \
-subj "/C=US/ST=California/L=San Francisco/O=Example Company/CN=autossl.dev"注意:此方法无法添加 SAN(主体备用名称)。
ECDSA 证书签名请求
# Generate ECDSA private key using P-256 curve
openssl ecparam -genkey -name prime256v1 -out domain.key
# Using P-384 curve
openssl ecparam -genkey -name secp384r1 -out domain.key
# Generate CSR based on private key
openssl req -new -key domain.key -out domain.csr检查生成的 CSR
生成 CSR 后,可以用以下命令检查内容:
# View detailed CSR information
openssl req -text -noout -in domain.csr
# Verify CSR signature
openssl req -verify -in domain.csr
# Extract domain information from CSR
openssl req -noout -subject -in domain.csr私钥安全
生成的私钥文件(例如 domain.key)必须妥善保管,不能向任何人泄露。建议设置严格的文件权限:chmod 600 domain.key
常见问题
CSR 和私钥是什么关系?
生成 CSR 时,实际生成的是一对密钥:私钥和公钥。CSR 包含公钥和身份信息,私钥必须保密。证书颁发机构根据 CSR 中的信息签发证书,该证书只能与对应的私钥一起使用。
同一份 CSR 可以重复使用吗?
技术上可以,但不建议。每次申请新证书时,最好生成新的密钥对和 CSR。证书到期或需要重新签发(例如更换证书颁发机构)时,应生成新的证书签名请求。
提交 CSR 之后必须保留什么?
必须保留私钥文件。证书签发后,配置 SSL/TLS 需要这把私钥。如果丢失私钥,即使拿到证书也无法使用,只能重新申请。
在线工具和命令行生成有什么区别?
功能上没有区别。此 CSR 生成器使用 Web Crypto API 在浏览器中生成密钥,结果与 OpenSSL 生成的结果兼容。在线工具的优势是更直观,不需要安装软件,也不需要记忆命令。
最佳实践
- 选择密钥长度:RSA 至少使用 2048 位;ECDSA 使用 P-256 或更高
- 按时续期:不要等到证书到期再续期,建议提前 30 天续期
- 使用 SHA-256:除非有特殊要求,SHA-256 是最合适的选择
- 添加 SAN:如果网站有多个域名(例如 autossl.dev 和 www.autossl.dev ),生成 CSR 时把所有域名都加上
- 保护私钥:使用严格的文件权限,并考虑加密存储
- 备份私钥:把私钥备份到安全的位置,同时确保备份本身也受到保护
现在就可以使用 CSR 生成器,为网站快速、安全地生成证书签名请求。