我有一个小型私人网络服务器,其中有几个虚拟主机。我知道不可能为每个单独的虚拟主机分配证书,因为服务器仅在建立 SSL 连接后才发现请求了哪个虚拟主机。但是是否有可能拥有一个列出多个域的 SSL 证书?或者至少是一个通配符域,例如 *.example.com。如果是,我必须编写哪些 Linux 命令来制作这样的自签名证书?
补充:澄清一下——我对所有虚拟主机只有一个 IP 地址。
我有一个小型私人网络服务器,其中有几个虚拟主机。我知道不可能为每个单独的虚拟主机分配证书,因为服务器仅在建立 SSL 连接后才发现请求了哪个虚拟主机。但是是否有可能拥有一个列出多个域的 SSL 证书?或者至少是一个通配符域,例如 *.example.com。如果是,我必须编写哪些 Linux 命令来制作这样的自签名证书?
补充:澄清一下——我对所有虚拟主机只有一个 IP 地址。
以下内容应该适合您:
结果:
如果您想要请求而不是自签名,只需将 -x509 替换为 -new 并将 -extensions 替换为 -reqexts。
更新
可以使用最新版本的 openssl 在命令行中直接指定主题备用名称:
另请参阅https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-the-command-line/183973#183973
在 subjectAltName:dNSName名称字段中创建一个domain.com 作为 CN和*.domain.com 的证书 - 有效。
在
openssl
中,将其添加到扩展中:扩展艾伯特的答案:
http://blog.loftninjas.org/2008/11/11/configuring-ssl-requests-with-subjectaltname-with-openssl/
您不必使用通配符域。您可以只列出您需要的所有主机名作为主题替代名称,它应该适用于所有主要浏览器。
首先 - 您可以为每个单独的虚拟主机分配一个证书 - 关键是为每个虚拟主机设置不同的私有(和外部/公共,如果你想使其世界可访问)IP地址。
但是可以 - 或者,如果您的虚拟主机只是 *.example.com,您可以分配通配符证书。
对于命令 - 谷歌有很多结果 - 我将在这里举一个例子:
http://www.justinsamuel.com/2006/03/11/howto-create-a-self-signed-wildcard-ssl-certificate/
并确保输入 *.example.com 作为通用名称。