我一直用它openssl
来为我的网站创建密钥和证书。虽然运行良好,但会导致浏览器投诉。
现在我想转到 Let's Encrypt 来获取适当的证书。
设置非常简单,我安装了 certbot 并按照其网站上的教程进行操作。
我很惊讶地看到应该certbot
与标志一起使用certonly
。直观地说,这应该意味着只创建了一个证书。它应该在设置期间要求我提供现有密钥。但事实并非如此,相反,它同时创建了一个新证书和一个新密钥。
sudo certbot certonly --standalone -d xxxx
...
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem
....
但这个密钥似乎不存在。如果我将路径输入到我的服务器中,它会抱怨找不到密钥。
我在证书的读取权限方面遇到了问题,通过这个问题解决了:https://serverfault.com/questions/773440/lets-encrypt-ssl-certificate-file-not-found-error-but-still-working
解决方案是改变访问权限。
但我不太确定是否要用我的私钥来做这件事。互联网安全非常复杂,我担心我真的不知道更改像私钥这样重要的东西的权限会带来什么后果。
我该如何使用新生成的证书。我在哪里可以找到相应的私钥?我是否需要应用其他配置?
答案1
忽略csr
和目录keys
;它们本质上只包含发行期间的临时文件。
Certbot 始终将所有证书的最新版本放在/etc/letsencrypt/live
:
/etc/letsencrypt/live │ │ 邮件.example.org │ │ │ cert.pem -> ../../archive/mail.example.org/cert8.pem │ │ │ chain.pem -> ../../archive/mail.example.org/chain8.pem │ │ │ ── fullchain.pem -> ../../archive/mail.example.org/fullchain8.pem │ └── privkey.pem -> ../../archive/mail.example.org/privkey8.pem └── www.example.org │ │ cert.pem -> ../../archive/www.example.org/cert7.pem │ │ chain.pem -> ../../archive/www.example.org/chain7.pem │ │ fullchain.pem -> ../../archive/www.example.org/fullchain7.pem └── privkey.pem -> ../../archive/www.example.org/privkey7.pem
因此您可以像这样配置服务:
SSLCertificateFile /etc/letsencrypt/live/www.example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.org/privkey.pem
这样,每次更新后只需重新加载服务,而不必重新配置。使用 certbot 的“部署挂钩”功能可自动执行权限更改、服务重新加载以及任何其他需要自动化的操作。