【发布时间】:2017-12-20 03:12:35
【问题描述】:
我在这里拉头发。 wix.com、squarespace.com ...等网站;可以动态生成网站,并且仍然在数百万个自定义域中的每一个上使用 SSL。
我尝试做同样的事情,但我不知道他们是如何做到的!?
合理的解决方案是在 Apache 上:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAlias *
UseCanonicalName Off
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/%0/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/%0/server.key
</VirtualHost></IfModule>
但是当我重新启动 apache 时出现错误:SSLCertificateFile: file '/etc/apache2/ssl/%0/server.crt' does not exist or is empty
即使我创建了一个带有一些虚拟证书的虚拟文件夹 /ssl/%0/...它仍然使用了(错误的)虚拟证书。
我知道有些人会大发雷霆,大喊您无法在 TLS 握手之前解析服务器名称。 但是根据这个post和其他的:%0可以用mod_vhost_alias解析,因为服务器名是用SNI发送的...
我知道这可行:第二种方法是为每个自定义域创建一个虚拟主机:
<VirtualHost *:443>
ServerName site111.ca
ServerAlias www.site111.ca
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile "/var/app/s3/ssl/site111.ca/certificate.crt"
SSLCertificateKeyFile "/var/app/s3/ssl/site111.ca/certificate.key"
SSLCertificateChainFile "/var/app/s3/ssl/site111.ca/certificate.chain"
</VirtualHost><VirtualHost *:443>
ServerName site222.ca
ServerAlias www.site222.ca
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile "/var/app/s3/ssl/site222.ca/certificate.crt"
SSLCertificateKeyFile "/var/app/s3/ssl/site222.ca/certificate.key"
SSLCertificateChainFile "/var/app/s3/ssl/site222.ca/certificate.chain"
我可以创建一个脏系统,在其中我为每个新域添加一个虚拟主机并每天重新加载 apache Eeewwww...再次:Apache 将虚拟主机的数量限制为 256:/
他们是怎么做到的!?还有其他技术可以帮助我吗? Nginx,Nodejs? 感谢您的宝贵时间。
【问题讨论】:
-
您为什么认为这需要成为静态服务器配置的一部分?您可以创建一个匹配通配符的配置,然后在您的应用程序中使用例如 HTTP_HOST 来决定要提供哪种资源。另外,是什么让您认为他们为每个站点使用不同的证书而不仅仅是通配符证书?
-
感谢您的快速回答@SteffenUllrich。你能扩展你的想法吗?我不明白。 HTTPS 需要在应用程序访问之前解析,所以你的意思是:“你可以创建一个匹配通配符的配置,然后在你的应用程序中使用例如 HTTP_HOST”?另外,我可以让:site111.mysite.com 工作没问题,但我尝试让 site111.com、site222.com 工作。也许我们彼此交谈:)
-
它仅在您可以使用通配符证书时才有效,即 *.mysite.com 是可能的,但 *.com 不是。但这也不是其他网站提供的,不是吗?
-
@SteffenUllrich 实际上这正是他们提供的。如果您有 site111.com,site222.com 说除了 site111.wix.com 和 site222.wix.com 之外,Wix 还将托管这些域,这很容易做到。我正在寻找解决这个问题的方法。
-
uwsgi with python 为我想要的提供了一个平台......还有其他选择吗? uwsgi-docs.readthedocs.io/en/latest/…
标签: apache ssl dynamic ssl-certificate sni