在Ubuntu上,/etc/ssl/private/似乎是用于签署证书(供nginx使用)的私钥的最佳位置。不安全的地方。 /etc/ssl/certs/文件是否需要维护安全或被视为公开文件?

评论

如果愿意,可以将.crt放在时代广场的广告牌上。

#1 楼

.crt文件被发送到所有连接的文件。它是公开的。 (chown root:rootchmod 644

要添加到私钥位置;确保将其正确固定以及存放在其中。 (chown root:ssl-certchmod 640

评论


我不知道为什么默认情况下该目录不是g + s。

–科林·安德森
2014-09-30 17:43



不一定是这样。目录为0750,因此该组中的所有用户都无法遍历该目录以读取文件。

–womble♦
15年8月12日在20:52

看起来ssl-cert是ubuntu上的无效组名。也许应该是chown root:root代替

– Atifm
18年3月20日在21:33

@Atifm在16.04或18.04上引入了ssl-cert证书组。我不记得是哪个。

– DylanYoung
19年6月18日在13:26

@DylanYoung:它肯定存在于Ubuntu 12.04上,我相信它是由ssl-cert软件包创建的,它可能用于创建自签名的蛇油证书等。

–MestreLion
19年7月20日在7:36

#2 楼

只要适当地保护私钥文件,将它们放在何处都没关系。公开证书是公开的;不需要保护-服务器权限或其他。

为了扩展答案,我不使用默认位置/etc/ssl。对于我来说,由于备份和其他原因,将所有我的地雷都更容易保存在一个单独的区域中。 br />示例设置

这篇文章是针对Ubuntu(Debian)+ Apache的,但是应该适用于大多数系统-只需在给定的配置中应用权限并更新位置/路径(apache / nginx / etc )。
如果SSL密钥文件(目录和文件)受到正确的保护,则可以。注意这些注释!

创建目录:

sudo mkdir /etc/apache2/ssl
sudo mkdir /etc/apache2/ssl/private
sudo chmod 755 /etc/apache2/ssl
sudo chmod 710 /etc/apache2/ssl/private


注意:/etc/apache2/ssl/private支持Ubuntu下的/etc/组。 (请参阅注释)在chmod 710上设置ssl-cert的权限也可以正常工作。

放置SSL文件:


将公共www ssl证书以及中间证书放入
700
/etc/apache2/ssl/private中的私人ssl密钥


设置所有者:

sudo chown -R root:root /etc/apache2/ssl/
sudo chown -R root:ssl-cert /etc/apache2/ssl/private/


注意:如果您没有ssl-cert组,只需在上面的行上使用'root:root'或跳过第二行。

设置权限:

公共证书

sudo chmod 644 /etc/apache2/ssl/*.crt


私人密钥

sudo chmod 640 /etc/apache2/ssl/private/*.key


注意:由于Ubuntu ssl-cert组,组权限设置为READ(640)。 '600'也可以。

启用Apache SSL模块

sudo a2enmod ssl


编辑任何Apache站点文件并启用

(请参阅最后一段)*

sudo nano /etc/apache/sites-available/mysiteexample-ssl.conf
sudo a2ensite mysiteexample-ssl
#             ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)


重新启动Apache2服务

sudo service apache2 restart




sudo systemctl restart apache2.service


完成。测试您的新SSL站点。

*这再次超出了问题,但是您可以复制默认的Apache SSL站点配置文件(/etc/apache2/ssl)作为一个好的起点/默认指令/目录的示例,通常在简单的(Ubuntu / Debian)Apache / SSL'conf'下使用文件。它通常指向自签名SSL证书+密钥(snakeoil),CA软件包以及用于给定SSL站点的通用指令。

复制后,只需编辑新的.conf文件并根据需要使用上面的新信息/路径添加/删除/更新它,然后执行/etc/apache2/ssl/private启用它。

评论


不知道为什么您建议将710设置为/ etc / apache2 / ssl / private的权限。设置目录(对于组)的执行位而不设置目录(对于组)的读取位对我来说没有多大意义。您是要设置为750吗?

–chriv
16 Mar 22 '16 at 18:09

@chriv我只是根据我在Ubuntu默认SSL区域下看到的设置权限来设置权限。请参阅/ etc / ssl / certs和/ etc / ssl / private和ssl-certs组的使用。见stackoverflow.com/a/23408897/503621

– bshea
16年6月11日在23:31

对具有许多可能答案的一般问题的非常详尽的解释。谢谢。只需添加几件事,您的sites-available / mysite.conf中的部分应包括如下证书:SSLCertificateFile /etc/apache2/ssl/mysite.crt上的SSLEngine SSLCertificateKeyFile / etc / apache2 /ssl/private/mysite.key

–乔治·迪米特里亚迪斯(George Dimitriadis)
18-09-29在8:18



顺便说一句-也可以将您的:80和:443配置合并到一个Apache“ .conf”文件中。无论如何,我将重定向到:443 / SSL端口:80的任何内容。也可以将基本SSL设置放入.conf文件中,并创建一个附加的“详细” SSL设置文件(例如,设置使用的密码等),并将其包括在虚拟区域之外的所有.conf文件中。我使用这些设置来稍微“强化” SSL,并将其包含在每个虚拟站点.conf中。我可以通过这种方式在SSL Labs获得A +。

– bshea
18-09-29在17:30

#3 楼

这里的所有答案似乎都不错,但是我想提到一件事,我发现这是一个问题...如果您必须将证书与中间体或根目录连接起来以提供一个链文件,请不要将其放在/etc/ssl/certs中,因为运行c_rehash时,由于其根或中间原因,它可能会创建到证书的哈希符号链接。

然后,如果您的证书已过期并且将其删除,并且不知道重新运行c_rehash,那么稍后可能会在/etc/ssl/certs目录中破坏哈希符号链接,并且开始发生怪异当您的本地计算机尝试通过SSL连接到其自身,并且找不到要验证的根目录时。例如,由于卷曲,我突然开始得到:

curl: (60) SSL certificate problem: unable to get issuer certificate


清理了/etc/ssl/certs中的一些旧的.crt和串联的.pem文件后不久。

将您的锁链至少存放在其他地方可以避免此问题。我最终制作了一个/etc/ssl/local_certs来存放我的证书和链,因此它们不会因您在/etc/ssl/certs中发现的一堆CA证书而迷失

#4 楼

如果将单个文件/目录的权限设置为chown root :0 private.keychmod 600 private.key之类的东西,那么只有root用户可以读取它,这并不是真正不安全的地方。正如您所说,CSR和证书文件不太敏感。

具有这些权限,您提到的路径和/ usr / local / ssl应该没问题。

评论


通常,访问私钥的应用程序以非root用户身份运行。我建议维护ssl-cert组的访问权限。

– Shane Madden
2011年4月13日在16:12

可以理解,但是像Apache这样的Web服务器会产生一个根“父”进程,并假设nginx也很相关。

–乔纳森·罗斯(Jonathan Ross)
11年4月13日在16:19

#5 楼

位置正确:



/etc/ssl/certs/文件的.crt

/etc/ssl/private文件的.key

两者的所有者都必须是root:root (如果需要,请使用sudo chmod root:root <file>进行更改)。

权限:



644用于.crt文件

600用于.key文件

将适用于nginx