这个csr文件是用于Azure Web应用程序的SSL证书。
当我搜索时,我发现关于在哪里生成csr文件的信息不一致。
一些来源说:我必须在运行web应用程序的服务器上创建csr文件。
在我的情况下,Azure上的服务器是未知的。我不能在那里运行任何东西...
或者,在我的本地PC上创建csr文件,并填写所有公司数据和自定义域名作为主题,是否可以?
如果控制台中已经安装了openssl,您可以在那里生成文件。由于它应该提示您进行设置,但目前不起作用,因此必须在openssl中指定所有必要的设置。例如:
openssl req -new -newkey rsa:2048 -nodes -out yoursite_com.csr -keyout yoursite_com.key -subj "/C=US/ST=California/L=San Francisco/O=Your Site Inc./OU=Engineering/CN=yoursite.com"
一旦您获得了csr文件,就不能从控制台打开它,实际上必须使用Kudu(单击高级工具)打开文件并复制内容。
您可以使用 Certreq.exe 或 OpenSSL 工具创建 cer 文件。
如需更详细信息,请查看官方文档,了解如何在 Azure 应用服务中 启用应用的 HTTPS。
其他人已经提供了有关这些事实的宝贵见解:
也许我错过了什么,但我没有看到以下问题的答案:
我回答这两个问题的方法是从生成CSR的实际过程开始,该过程会产生两个文件,显然部分 - 证书请求可能对此问题来说并不那么重要。更重要的是,首先生成RSA密钥对,其中密钥对的公共部分用于CSR请求,而私有部分则是使用证书的整个目标的关键部分。
虽然密钥对通常是使用基于硬件的熵数据生成的,因此对您正在使用的机器特定,但结果(密钥对)可以在任何地方使用,因为密钥值仅在数学上绑定在一起。 CSR内容基于公共密钥和所请求证书的主题,因此,在其中没有任何内容无法在其他地方使用。这解释了为什么实际上可以在不同的机器/服务上生成CSR(和密钥),而实际上将使用它的那台机器/服务,因此回答了问题2。
问题1的答案来自生成过程中产生的私钥的关键特征。这个关键特征是它应该保持私有。理想情况下,只有证书身份的唯一用户才能使用它。这个“用户”将成为目标服务(Web服务器)。当您在其他地方生成密钥时,您负责在该环境中保护它,并在传输到目标时保护它。这通常是一个不必要的风险。建议的解决方案通常是在目标证书/密钥存储中生成带有私钥保护的密钥,以防止从存储中提取(导出)私钥。即使目标服务(Web服务器)实际上也无法提取/读取它(但可以使用它)。由于密钥对是在CSR创建过程中生成的,因此这意味着应该在那个存储库所在的地方执行此过程以及通过该存储库的功能。这应该回答了这个问题。另外一点,DigiCert工具以及IIS管理器UI使用Windows证书存储,为私钥添加保护层,但将密钥标记为可导出,允许密钥提取。 OpenSSL工具(在Windows上)生成Windows证书存储之外的密钥(作为文件),因此您可以轻松地访问它,这并不安全。
我找到了这篇文章:https://www.namecheap.com/support/knowledgebase/article.aspx/9854//how-to-generate-a-csr-code-on-a-windowsbased-server-without-iis-manager,提到了另外三种生成CSR的方式/工具。其中第一种方法(使用Microsoft Management Console中的Certificates插件)实际上允许您标记私钥为不可导出。不必手动操作,您可以通过搜索“应用程序证书服务”来购买SSL证书并将其绑定到您的应用程序。这比手动生成CSR要简单得多,也更快捷,而且更少出现混淆。文档过于冗长,也没有明确说明我们是否应该远程连接到服务器并在那里生成CSR等,因此我强烈建议通过应用程序证书服务进行操作。
yoursite_com.key
),因为并非所有文件夹都被持久化,所以你可能会丢失该文件。另一方面,你的密钥文件可能会作为应用服务的一部分被提供。 - Hilarion