/etc/ssl/private/
似乎是用于签署证书(供nginx使用)的私钥的最佳位置。不安全的地方。 /etc/ssl/certs/
文件是否需要维护安全或被视为公开文件?#1 楼
.crt文件被发送到所有连接的文件。它是公开的。 (chown root:root
和chmod 644
)要添加到私钥位置;确保将其正确固定以及存放在其中。 (
chown root:ssl-cert
和chmod 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中的
–乔治·迪米特里亚迪斯(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.key
和chmod 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
。
评论
如果愿意,可以将.crt放在时代广场的广告牌上。