You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CommonName继承至Subject Alternative Name?Windows 10下OpenSSL实操问题

解决仅含单个匹配CN的SAN证书生成问题

嘿,我来帮你搞定这个证书配置的小麻烦!针对你在Windows 10上用OpenSSL 1.0.2n,需要生成仅含1个Subject Alternative Name(SAN)且与CommonName(CN)完全匹配的证书需求,下面是一步步的实操方案:

步骤1:修改openssl.cfg配置文件

找到你调整过的C:\OpenSSL-Win64\bin\openssl.cfg,重点修改这两个核心段落:

  • 在[req]段中,确保存在(没有就添加):
    req_extensions = v3_req
    
    这会让OpenSSL在生成证书请求时自动加载v3扩展配置。
  • 在[v3_req]段中,把subjectAltName配置改成仅包含一个和目标CN完全一致的DNS项:
    subjectAltName = DNS:your-target-domain.com
    
    比如你要设置CN为example.com,这里就写DNS:example.com。同时确保该段的基础约束配置正常,避免证书不被系统信任:
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    

步骤2:生成证书请求(CSR)和私钥

打开命令提示符,切换到OpenSSL的bin目录(执行cd C:\OpenSSL-Win64\bin),然后运行以下命令:

openssl req -new -newkey rsa:2048 -nodes -keyout your-domain.key -out your-domain.csr -config openssl.cfg

执行过程中,当提示输入Common Name (e.g. server FQDN or YOUR name)时,输入和刚才SAN里完全一致的域名(比如example.com),其他字段(国家、组织名称等)可以按需填写,或者直接回车跳过。

步骤3:生成自签名证书(按需操作)

如果是生成自签名证书,继续执行这条命令:

openssl x509 -req -days 365 -in your-domain.csr -signkey your-domain.key -out your-domain.crt -extensions v3_req -extfile openssl.cfg

这里必须加上-extensions v3_req和-extfile参数,否则SAN信息不会被写入最终的证书文件。

步骤4:验证证书是否符合要求

生成完成后,用这条命令检查证书内容:

openssl x509 -in your-domain.crt -text -noout

在输出里重点确认两个部分:

  • Subject:字段中的CN=值,和你设置的域名完全一致;
  • X509v3 Subject Alternative Name:字段,只有一个DNS项,且和CN的值完全匹配。

额外注意事项

  • 如果之前的配置文件里SAN有多个DNS项,一定要删除多余的,只保留目标域名;
  • OpenSSL 1.0.2n对配置语法要求严格,确保subjectAltName的格式正确,不要有多余的逗号或空格;
  • 尽量在OpenSSL的bin目录下执行命令,避免因路径问题导致配置文件加载失败。

内容的提问来源于stack exchange,提问作者Luca Sepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:43:30