我正在将我的应用投入生产,需要帮助生成 CSR。我创建了一个私钥并按照以下步骤操作:
- 创建私钥
- 输入密码 (
openssl genrsa -des3 -out domainname.key 1024
) - 创建 CSR (
openssl req -new -key domainname.key -out domainname.csr
) - 在 CSR 中,我输入了所有信息。通用名称的格式为:
XX.XXX.XXX:3000
,其中 X 是数字。
最后,我生成了 CSR,但此时我的应用程序位于具有 IP 地址的远程服务器上http://XX.XXX.XXX.XXX:3000/
,在thawte.com
生成试用 SSL 时显示错误:
The Common Name in the CSR is invalid.
有没有人有过类似的任务并且可以告诉我我做错了什么?
第二个问题:您能向我推荐什么服务器,以及我应该在列表中选择什么 Web 平台(生成 SSL 时)?
答案1
通用名称不包含端口号或冒号(例如):3000
。它们不应是 IP 地址。它们也不包含协议标识符(例如)https://
。
如果我没记错的话,数字本身不能作为域名(尽管它们可以作为子域名),并且没有顶级域名仅仅是数字。您的通用名称(XX.XXX.XXX:3000
其中 X 为数字)不是 IP 地址或域名。
通用名称应该是证书所要使用的完全限定域名。
*.example.com
如果您正在申请通配符证书,则可以将其用作通用名称。
如果您的应用程序在端口 3000 上运行,您应该正常请求证书,不带端口号,然后告诉客户端使用端口 3000。如果客户端是 Web 浏览器,则可在 URL 中完成此操作:`https://www.example.com:3000/“
“Web 平台”的选择是可选的,它允许 Thawte 以该软件所需的格式向您提供文件。例如,nginx 要求证书和任何链证书都位于同一文件中,且顺序正确。Apache 可以将它们放在单独的文件中,并使用 和 导入它们SSLCertificateFile
。SSLCertificateChainFile
如果您的网站在列表中的知名 HTTP 服务器上运行,请选择该软件。如果您自己编写了它,或者是为您编写的定制软件,并且它不在列表中,请咨询软件制造商。
答案2
通用名称的格式为:XX.XXX.XXX:3000,其中 X 是数字
首先,证书中的主机名或IP地址不能包含端口。
其次,假设 XX.XXX.XXX 是 IP 地址,则 IP 地址必须位于 IP 地址类型的主题备用名称条目中(不是 DNS 类型,也不在主题 DN 的 CN 中)。请参阅RFC 2818:
在某些情况下,URI 被指定为 IP 地址而不是
主机名。在这种情况下,iPAddress subjectAltName 必须存在
于证书中,并且必须与 URI 中的 IP 完全匹配。
有些客户对此比较宽容,但这并不是获得不合规证书的理由。
无论如何,我不确定 Thawte 是否会为您颁发 IP 地址证书,因为他们很难检查该 IP 地址属于谁。
(我有点惊讶他们甚至费心查看 CN,因为他们真正需要的是从 CA 获取公钥,然后仅使用他们独立验证的内容颁发证书。)
答案3
通用名称字段应为完全限定域名 (FQDN) 或您计划使用证书的 Web 地址,例如您希望客户使用 SSL 连接的站点区域。如果用于 SSL 的 Web 地址是 www.example-name.com,请确保在 CSR 中提交的通用名称是 www.example-name.com;同样,如果用于 SSL 的 Web 地址是 secure.example-name.com,请确保在 CSR 中提交的通用名称是 secure.example-name.com。