我正在尝试在运行 apache 的 Ubuntu VPS 上设置多个 SSL 证书。之前我只有一个域名的证书,但现在我想为另一个域名设置一个证书。
我购买了 SSL 证书,并收到一个 .crt 文件,我将其上传到/etc/apache2/ssl/www_domain_com/domain.crt
。在我的虚拟主机配置中,我有以下两行
SSLCertificateFile /etc/apache2/ssl/www_domain_com/www_domain_com.crt
SSLCertificateKeyFile /etc/apache2/ssl/www_domain_com/server.key
目前这个功能是有效的,因为我的 apache 错误日志显示两者不匹配,但我不明白 server.key 文件需要包含什么?我购买 SSL 证书时应该收到这个吗?
我有一个用于其他域的 server.key 文件,并且已为其成功设置了证书,我需要使用该文件吗?
有人可以解释一下这个文件的用途以及我需要如何生成它吗?
答案1
回答您的所有问题(对于将来偶然遇到此问题的任何人):
目前这是可行的,因为我的 apache 错误日志说两者不匹配,但我不明白 server.key 文件需要包含什么?
它需要包含一个私钥。
当我购买 SSL 证书时应该发送此信息给我吗?
通常不会。当您从公共证书颁发机构 (CA) 购买 TLS 证书时,您会提供证书签名请求 (CSR),他们会提供相应的签名证书以及链接回其受信任根证书的证书链。CSR 是根据您在本地生成的私钥创建的。(注意:req -x509
您在评论中提到的命令将生成自签名证书,而不是 CSR。)
我有一个用于其他域的 server.key 文件,并且已为其成功设置了证书,我需要使用该文件吗?
假设您想托管两个域:是的。设置单个 Apache 实例来提供多个安全域需要使用服务器名称指示 (SNI),这是 TLS 扩展。您必须为要托管的每个域单独配置 Apache。VirtualHost
有关详细信息,请参阅 Apache 指令。
有人可以解释一下这个文件的用途以及我需要如何生成它吗?
创建 CSR 的过程首先涉及创建私钥。在将 CSR 发送给 CA 之前,您应该已经完成此步骤。有些网站可以在您购买证书时在浏览器中生成密钥和 CSR;在这种情况下,浏览器会提示您将私钥保存到磁盘。
另外:您应该保护您的私钥:确保只有系统管理员/网络服务器才能读取它们。