SSL证书中涉及的文件是否应保密(添加到.gitignore)?

tim*_*xyz 5 github ssl-certificate

在为我的站点设置SSL证书的过程中,创建了几个不同的文件,

  • server.csr
  • server.key
  • server.pass.key
  • site_name.crt

在将我的网站推送到github之前,是否应将这些添加到.gitignore?

如果这是一个愚蠢的问题,请提前道歉.

kap*_*kap 13

我想补充@VonC的答案,因为它实际上更复杂:

这些文件具有不同的内容,并且根据不同的内容,它们需要不同的访问控制:

  • server.csr:这是一个证书签名请求文件。它是从密钥生成的(server.key在您的情况下)并用于创建证书(site_name.crt在您的情况下)。创建证书后应将其删除。不应与不受信任的各方共享它。
  • server.key:这是私钥。在任何情况下都不能在服务器外部共享此文件。它不能最终出现在代码存储库中。在系统上,它必须以Web 服务器用户0600所拥有的权限(即只读)进行存储。root至少在 Linux 中,在 Windows 中用户访问权限的处理方式有所不同,但必须以类似的方式完成。
  • site_name.crt:这是签名的证书。这被认为是公开的。证书本质上是公钥。它被发送给连接到服务器的每个人。它可以存储在存储库中。(@VonC 的提示是正确的,代码和数据应该分开,但它可以位于单独的存储库中进行部署)。
  • server.pass.key:不知道这是什么,但它似乎包含访问密钥的密码。如果是这种情况,则适用与密钥相同的规则:切勿与任何人共享


Von*_*onC 11

在将我的网站推送到github之前,是否应将这些添加到.gitignore?

它们根本不应该在回购中,这意味着存储在回购之外.
那样:

  • 你不需要管理一个.gitignore,
  • 你可以将这些钥匙存放在安全的地方.

在看到用户在公共存储库中存储密钥和密码后,GitHub实际上不得不在2013年更改搜索功能.看完整的故事.

这篇文章包括这句话:

错误可能反映了软件开发人员的整体教育问题.

当你加速程序 - "6周,你将成为一名真正的软件开发人员" - 教授开发时,安全就成了事后的想法.考虑到"90%的开发是复制你不理解的东西,我敢打赌他们中的大多数根本就不知道id_rsa是什么 "

2016年,这本"书"(作为一个笑话)反映了:

https://twitter.com/DomBurf/status/707473924137881600


OP增加:

我认为Heroku需要将文件放入仓库以便运行" >heroku certs:add server.crt server.key"并设置证书.

" 配置和配置变量 "是该主题的一个说明:

更好的解决方案是使用环境变量,并将密钥保留在代码之外.在传统主机上或在本地工作,您可以在bashrc文件中设置环境变量.在Heroku上,您使用配置变量.

文章" Heroku:SSL Endpoint "不会强迫您在代码中包含这些密钥和证书.它们可以直接在Heroku上生成,并保存在其他任何地方以便妥善保管.只是没有在一个git回购.