服务器创建证书申请是确保网站或服务安全通信的重要步骤,通常涉及生成密钥对、创建证书签名请求(CSR)以及提交给证书颁发机构(CA)等流程,以下是详细操作步骤和注意事项:

需要理解证书申请的基本原理,证书的核心是公钥和私钥对,其中私钥需由服务器安全存储,公钥则通过CSR提交给CA,CA验证身份后签发证书,将公钥与身份信息绑定,整个过程需确保私钥不被泄露,否则证书安全性将完全失效。
在Linux服务器上,常用OpenSSL工具生成CSR,以Nginx或Apache服务器为例,首先需创建存放密钥和CSR的目录,如/etc/ssl/private
,并设置严格的目录权限(仅root可读写),执行openssl genrsa -out server.key 2048
命令生成2048位的RSA私钥,其中-out
指定输出文件,2048
为密钥长度,推荐使用2048或4096位以确保安全性,生成过程中无需输入密码,但若需设置私钥密码保护,可添加-des3
参数,不过这会在服务器启动时输入密码,可能影响自动化服务。
接下来创建CSR,执行openssl req -new -key server.key -out server.csr
命令,系统会提示一系列信息:国家代码(如CN)、州或省名、城市、组织名称、部门、通用名(Common Name,需为域名或IP地址)、邮箱地址等,通用名”必须与实际访问域名完全一致,例如www.example.com
,否则签发的证书无法正常使用,其他信息可根据实际需求填写,但“通用名”是CA验证的重点。
若为多域名证书,需在创建CSR时添加Subject Alternative Name(SAN)扩展字段,可通过配置文件实现,例如创建san.conf
包含[req]
、distinguished_name=req
、req_extensions=v3_req
,以及[v3_req]
和subjectAltName=@alt_names
,再定义[alt_names]
部分添加DNS条目(如DNS:www.example.com, DNS:example.com),执行命令时添加-config san.conf -extensions v3_req
参数,即可生成包含多域名的CSR。

生成CSR后,可通过openssl req -text -noout -verify -in server.csr
命令检查CSR内容是否正确,验证签名是否有效,确认无误后,将CSR文件中的文本(包括-----BEGIN CERTIFICATE REQUEST-----
和-----END CERTIFICATE REQUEST-----
)复制提交给CA,CA可能是公共机构(如DigiCert、Let's Encrypt)或私有CA,提交方式包括网页表单、邮件或API接口,Let's Encrypt等免费CA通常支持自动工具(如Certbot)简化流程,无需手动创建CSR。
对于Windows服务器,可通过IIS管理器完成操作:打开“服务器证书”功能,选择“创建证书申请”,填写信息后选择“保存到文件”,生成CSR文件,操作中需注意密钥备份和权限控制,私钥文件应限制访问权限,避免被非授权用户获取。
证书申请提交后,CA会验证域名所有权或组织身份,验证方式包括邮箱验证、DNS记录验证或文件验证,验证通过后,CA将签发证书文件(如.crt或.pem),通常包含服务器证书、中间证书和根证书链,需将证书文件与私钥文件配置到服务器中,例如Nginx的ssl_certificate
和ssl_certificate_key
指令,并重启服务使配置生效。
在整个过程中,需注意以下几点:私钥必须妥善保管,建议加密存储并定期备份;CSR信息需准确无误,特别是域名和组织信息;证书有效期通常为1年(Let's Encrypt为90天),需及时续期;多域名证书需提前规划所有需包含的域名,避免后续修改CSR。

相关问答FAQs
-
问:CSR生成时“通用名”填错怎么办?
答:通用名(Common Name)必须与证书绑定的域名完全一致,若填错需重新生成CSR,错误CSR无法修改,只能通过新的私钥和CSR重新向CA申请,因此生成前务必仔细核对域名,特别是泛域名证书需确保通配符格式正确(如*.example.com
)。 -
问:如何验证CSR是否包含正确的多域名信息?
答:使用OpenSSL命令openssl req -text -noout -in server.csr
查看CSR内容,在“Requested Extensions”部分找到“Subject Alternative Name”,确认是否包含所有需要的DNS条目,若无或遗漏,需重新生成CSR并正确配置SAN扩展字段。