【问题标题】:How does one install ssl certificates programatically (OpenSSL)如何以编程方式安装 ssl 证书(OpenSSL)
【发布时间】:2011-09-11 09:52:43
【问题描述】:

我有一个正在为客户开发的应用程序,总而言之,它允许他们的每个客户通过自定义模板并关联他们自己的域名来创建自己的应用程序版本(所有代码都位于我的客户端服务器)。

我面临的问题是,当这些用户使用自己的域名创建自己的品牌版本,然后想登录到他们的管理员时,系统无法提供 https 身份验证。

我知道一个人可以创建一个自签名证书,我“认为”有一种相当简单的方法可以通过编程方式执行此操作,但是如果我想让用户能够购买自己的 CA 签名证书,那么这怎么可能?完成了吗?

我花了几个小时试图在网上找到这个问题的答案,但似乎找不到这个令人困惑的问题的解决方案。

我认为我需要的是一些简单的代码,允许用户填写所需的表单字段,然后创建 CSR 文件,然后用户将提供给 CA 以获得他的 CA 文件,并为此提供一些代码需要允许用户上传它...这反过来会自动安装它并重新起草所需的网络服务。

我们将不胜感激任何/所有帮助和指导!

【问题讨论】:

  • 澄清一下,它使用的是 Apache Httpd 吗?
  • “我花了几个小时试图找到答案......” - 确切地说,问题是什么?帖子看了两遍,没找到。 (或者是“如何购买 CA 签名证书”?你肯定没有花几个小时在上面……)。
  • 感谢您的努力...假设我们正在使用 Wordpress 的“多站点”功能,允许公众从我们的系统创建自己的个人自定义网站。假设多站点模式设置为将每个新站点创建为我们主域之外的自己的子域。通过使用另一个插件,我们可以让用户能够使用他们自己的域名,而不是简单地让他们添加一个指向我们服务器的 A 名称记录。用户需要一种自动化的方式来购买自己的 SSL 证书,CSR gen + 安装该证书,以便对他们的域的 https 请求显示他们的 ssl 证书。

标签: php ssl certificate openssl ssl-certificate


【解决方案1】:

您将如何处理这取决于您的架构。但这里有几点需要考虑:

  1. 大多数 SSL 配置都在唯一的 IP 地址上运行。这意味着您添加的每个 SSL 证书都需要另一个 IP 地址。例如,如果您使用负载均衡器,您可能能够集中该配置。能否以编程方式执行此操作取决于您的负载平衡器。
  2. 您最好根据您的私钥生成 CSR。否则,您将不得不允许用户上传私钥和证书(有时还包括链文件)。

【讨论】:

  • 重新唯一的 IP 地址:前段时间可能是这样,但是自从引入Server Name Indication 之后,这些问题很容易解决(除了人们仍在使用带有 SP 的 Windows XP 上的 IE6
【解决方案2】:

通常,处理服务器证书是由系统管理员完成的,因此对于没有这方面知识的人来说,很少有工具是用户友好的。

您可以创建一个 PHP 网页,该网页创建一个私钥和 CSR(请参阅 openssl_csr_new 示例)并让用户以 PEM 格式复制 CSR(以及私钥以供以后使用)。一些 CA 允许您在请求证书时将此类 CSR 粘贴到他们的表单中。一旦用户获得证书(可能还有来自 CA 的链),他们需要配置服务器以使用它(连同私钥)。 Webmin 之类的工具可以让您从 Web 浏览器执行此操作(如果您不想部署完整的基于 Web 的管理界面,您可能希望实现类似于 Webmin 的功能)。

如果请求证书的任务是您的客户的责任(如果它是他们的服务器,这确实应该是),他们将需要接受一些培训以知道该做什么,因为该过程不可避免地会根据具体情况而略有不同他们选择的 CA。

不用说,如果您实现了可以让用户更改证书和私钥的脚本,则应该使用适当的身份验证和授权来执行这些操作。

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 2011-07-02
    • 2020-06-12
    • 2011-07-16
    • 1970-01-01
    • 2010-11-28
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多