如何通过程序安装ssl证书(OpenSSL)


How does one install ssl certificates programatically (OpenSSL)

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

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

我知道可以创建一个自签名证书,我"认为"有一种相当简单的程序实现方法,但如果我想让用户能够购买自己的CA签名证书,那么如何实现这一点?

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

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

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

如何实现这一点取决于您的体系结构。但这里有几件事需要考虑:

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

通常,处理服务器证书是由系统管理员完成的,因此很少有工具对不了解这些知识的人友好。

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

如果请求证书的任务是您的客户端的责任(如果是他们的服务器,则应该是这样),则他们需要接受一些培训,以了解该做什么,因为根据他们选择的CA,过程不可避免地会略有不同。

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