![SSL 证书 ca-certificates.crt 和 ssl-cert-snakeoil.pem 已过期 - 怎么办?](https://linux22.com/image/116388/SSL%20%E8%AF%81%E4%B9%A6%20ca-certificates.crt%20%E5%92%8C%20ssl-cert-snakeoil.pem%20%E5%B7%B2%E8%BF%87%E6%9C%9F%20-%20%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F.png)
运行时sudo lynis audit system
它告诉我,我的两个 SSL 证书已过期,即:/etc/ssl/certs/ca-certificates.crt 和 /etc/ssl/certs/ssl-cert-snakeoil.pem。
我应该怎么做才能解决这个问题?删除那些证书?如果是这样怎么办?我正在使用 Debian 9.1 和 KDE。
答案1
/etc/ssl/certs/ca-certificates.crt
不应该只是“您的”SSL 证书。对于希望将受信任 CA 证书列表全部存储在单个文件中的程序,它应该是 OpenSSL 信任的所有 CA 证书的串联。
一些使用 OpenSSL 的程序会希望受信任的 CA 证书作为目录中的单独文件,其文件名是证书哈希值,其形式HHHHHHHH.N
为 N 通常为 0(如果有两个或多个证书具有相同的哈希值,则第一个证书将具有相同的哈希值)后缀.0
,第二个.1
等)。这是通过目录中的符号链接完成的/etc/ssl/certs
。
两种形式均由update-ca-certificates
命令管理,而命令由文件控制/etc/ca-certificates.conf
。根证书的实际主副本位于 的子目录中/usr/share/ca-certificates/
(/usr/local/share/ca-certificates
如果您选择以 Debian Way 添加自定义根证书)。
如果您想排除某些默认 CA 证书(例如,因为它们已过期,并且您被命令从系统配置中删除所有过期的证书),您应该编辑/etc/ca-certificates.conf
,在相应的行前面加上感叹号,然后update-ca-certificates
运行根。对于您的自定义 CA 证书,您应该/usr/local/share/ca-certificates/*
在运行之前将它们从子目录中删除update-ca-certificates
。否则,update-ca-certificates will just add it back whenever the
ca-certificates` 包将被更新或重新配置。
请注意,过期的证书/etc/ssl/certs
通常不会成为问题:OpenSSL 库函数将检查证书是否过期,并将过期的证书报告为验证失败。当然,如果您的系统不了解实时和日期,或者应用程序编程不当而忽略了证书过期,那么您就有正当理由从配置中删除过期的证书。
如果你想重新生成/etc/ssl/certs/ssl-cert-snakeoil.pem
证书,命令是:
make-ssl-cert generate-default-snakeoil --force-overwrite
这将/etc/ssl/certs/ssl-cert-snakeoil.pem
使用新的自签名证书覆盖该证书,并/etc/ssl/private/ssl-cert-snakeoil.key
使用相应的新私钥覆盖该文件。
答案2
您的发行版的软件包存储库中应该有一个“ca-certificates”软件包。
升级该软件包,您安装的 CA 证书也会升级。
顺便说一句,如果您从系统中删除 ca-certificates.crt,您将无法信任任何人的 SSL 证书。