Http 如何在web应用程序中支持用户提供的SSL证书

Http 如何在web应用程序中支持用户提供的SSL证书,http,security,ssl,ssl-certificate,Http,Security,Ssl,Ssl Certificate,我正在构建一个web应用程序,用户可以在其中创建自己的网站。用户可以选择将自己的域名指向这些站点。应用程序的原型已经存在;Apache接受对所有主机名的请求,实际的域映射和解析发生在应用程序级别(简单的数据库查找会获取与请求的主机名匹配的站点) 我陷入困境的是用户的SSL证书如何符合这个等式。我需要采取哪些步骤来允许用户上载其SSL证书,以便应用程序能够成功地处理对其主机名的安全HTTP请求?这甚至是应用程序可以单独处理的吗?我认为您无法单独在应用程序中处理这一问题。 这是一个CA问题,除非您是

我正在构建一个web应用程序,用户可以在其中创建自己的网站。用户可以选择将自己的域名指向这些站点。应用程序的原型已经存在;Apache接受对所有主机名的请求,实际的域映射和解析发生在应用程序级别(简单的数据库查找会获取与请求的主机名匹配的站点)


我陷入困境的是用户的SSL证书如何符合这个等式。我需要采取哪些步骤来允许用户上载其SSL证书,以便应用程序能够成功地处理对其主机名的安全HTTP请求?这甚至是应用程序可以单独处理的吗?

我认为您无法单独在应用程序中处理这一问题。
这是一个CA问题,除非您是一家中间CA公司,或者您无法获得用户的域SSL证书并为用户的域签名。

典型用户,更重要的是要创建此系统网站的用户,而不是在自己的服务器上设置自己的WordPress或其他网站(或他们自己的付费共享服务器托管帐户)将完全不知道如何设置正确的SSL证书,因此将其安全地发送到您的帐户,以便您可以安装它甚至不会成为问题,因为他们永远不会走到这一步


但是,您应该能够使用来完成所需的操作。作为添加域过程的一部分,一旦域指向您的服务器(用户必须通过其域注册器了解如何执行此操作),您可以创建一个Let's Encrypt证书并验证它。我最喜欢的web托管公司(我不会说这不相关——任何人都可以努力做到这一点)作为其控制面板的一部分提供此功能。他们还向一些大型发行者提供付费证书,多年来一直如此,但对于大多数小型网站来说,Let's Encrypt工作得很好,完全免费。安装过程只需一分钟。关键是你必须先给用户一个IP地址或CNAME,以便他们可以指向域。一旦域解析到您的服务器,您就可以获得Let's Encrypt证书。

证书从何而来的问题实际上是一个单独的问题。我们已经讨论了Let's Encrypt作为一个潜在的解决方案。我的问题更多的是关于如何以及在何处安装证书,请记住每个域将不存在单独的Apache虚拟主机。@SamHastings我的观点是用户不会上载或安装证书。您的系统将使用Let's Encrypt工具代表用户请求、验证证书并将其安装到Apache中。它们将是“用户的SSL证书”只是名义上的-它们实际上不会由用户提供。至于单独的虚拟主机,我认为Let's Encrypt实际上可以为您解决这一问题,尽管无可否认,目前我正在为现有服务器添加另一个域,所以有时会有点混乱。