我正在运行Django网站并使用let加密我的SSL.框架的配置使得我无法访问:http://url.com/.xxxx
我可以免费访问的是:http: //url.com/static/.xxxx
我的/ static/URL可以接受并托管任何随机文件,以便加密需求.有没有办法让certbot支持/ static /而不是只使用/为URL?
谢谢
我发现一个可以接受的工作对我来说是可以接受的.进一步挖掘,我发现/.well-known/始终是SSL检查的基本目录.这意味着我们可以添加一个静态目录,它可以很好地与certbot一起使用.这是如何,首先将其添加到您的apache配置中:
Alias /.well-known/ /var/www/XXXXX/website/static/.well-known/
<Directory /var/www/XXXXX/website/static/.well-known/>
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
然后将其添加到settings.py文件中:
STATIC_ENCRYPT_URL = '/.well-known/'
STATIC_ENCRYPT_ROOT = '/var/www/XXXXX/website/static/'
Run Code Online (Sandbox Code Playgroud)
将其添加到您的urls.py中:
urlpatterns = [
...
] + static(settings.STATIC_ENCRYPT_URL, document_root=settings.STATIC_ENCRYPT_ROOT)
Run Code Online (Sandbox Code Playgroud)
重置您的网络服务器.现在你有一个特殊的url /.well-known/来托管任何certbot所需的文件.
我仍然希望得到比这更好的答案.
我已经安装了 certbot,并且 certbot 制作了自己的 systemd 服务文件“certbot.service”用于自动证书更新,该文件每天通过 .timer 文件启动一次。
成功执行此“certbot.service”后,我喜欢执行第二个(“cert-copy-after-certbot.service”),将证书复制到另一个位置。
目前我的设置如下所示:
“certbot.service”(由 certbot 生成):
pi@raspberrypi:/lib/systemd/system $ cat certbot.service
[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://letsencrypt.readthedocs.io/en/latest/
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true
Run Code Online (Sandbox Code Playgroud)
“cert-copy-after-certbot.service”:
pi@raspberrypi:/etc/systemd/system $ cat cert-copy-after-certbot.service
[Unit]
Description=crt update after certbot has run
Wants=certbot.service
After=certbot.service
[Service]
Type=simple
ExecStart=/bin/sh -c "cat /etc/letsencrypt/live/<mydomain>/privkey.pem /etc/letsencrypt/live/<mydomain>/fullchain.pem > /etc/ejabberd/ejabberd.pem"
Run Code Online (Sandbox Code Playgroud)
如果我运行这个文件:
systemctl start <unitname>
Run Code Online (Sandbox Code Playgroud)
两项服务均正常运行。
但是当我用“systemctl start certbot”启动 certbot 并检查
systemctl status cert-copy-after-certbot
Run Code Online (Sandbox Code Playgroud)
cert-copy-after-certbot.service 未运行。
是我配置错误了吗?
我正在 Ubuntu 18.04 服务器上发布一个用 Python Pyramid 制作的网站。该网站是在HTTP运行正常,现在我想让它运行HTTPS按照这篇文章,但要安装我得到这个消息时:
IMPORTANT NOTES:
- Unable to install the certificate
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/dev.anything.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/dev.anything.com/privkey.pem
Your cert will expire on 2019-03-17. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
Run Code Online (Sandbox Code Playgroud)
这是我的配置文件,它位于/etc/nginx/sites-available/snow_service.nginx:
server {
listen 80; …Run Code Online (Sandbox Code Playgroud) 在 Ubuntu 16.04、Certbot 0.28.0 和 nginx 1.10.3 的设置中,我无法使用 Certbot 续订现有证书。
当我运行时sudo certbot renew,它失败并出现以下错误:
Hook command "nginx -s stop" returned error code 1
Error output from nginx:
nginx: [error] invalid PID number "" in "/run/nginx.pid"
Run Code Online (Sandbox Code Playgroud)当我运行时sudo certbot --nginx,它因以下错误而失败:
certbot.errors.MisconfigurationError: nginx restart failed:
Run Code Online (Sandbox Code Playgroud)我在使用 certbot-auto 更新我的证书时遇到了权限问题,因为每当它运行时都会显示以下消息:
Requesting to rerun certbot-auto with root privileges...
Run Code Online (Sandbox Code Playgroud)
它不需要以 root 身份运行,因为运行该命令的用户拥有 certbot 使用的所有目录的权限。我找不到任何命令行选项来禁用此功能,但查看脚本本身,我发现当它重新运行时,它会检查参数
--cb-auto-has-root,如果存在,它不会尝试(再次)获取根权限。我发现如果我用这个命令运行 certbot-auto ,它就像非 root 一样运行得很好!
但我不确定是否应该使用这个解决方法 - 因为它没有记录 - 或者将来会中断。作为非 root 用户运行的推荐方法是什么?
[环境]
我有一个失败cerbot一个内(让我们加密客户端)泊坞窗容器。看起来acme-v02.api.letsencrypt.org不能从容器解析,但可以从主机解析(最可能的原因)。我已经习惯了容器从主机的 DNS 参数继承的事实,但是对于 AWS EC2 实例,似乎有一些微妙之处
[ec2-user@ip-172-31-32-243 ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
search eu-west-2.compute.internal
nameserver 172.31.0.2
Run Code Online (Sandbox Code Playgroud)
基于此和AWS 控制台中的一些元素,我尝试手动添加这些地址
docker run --dns 172.31.0.2 --dns 172.65.32.248
Run Code Online (Sandbox Code Playgroud)
(我可能没有找到合适的 DNS)
使用主机的网络解决问题
docker run --network="host"
Run Code Online (Sandbox Code Playgroud)
但我只是不太明白为什么。是否与.net 中使用的网络接口有关--network="host"?以下是可用的:
[ec2-user@ip-172-31-32-243 ~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group …Run Code Online (Sandbox Code Playgroud) 我为 SignalR 创建了一个小型演示项目。当我在没有 SSL 的情况下在 Nginx 后面发布我的项目时,这一切都奏效了。但是在我运行 Certbot 并将 SSL 添加到站点后,所有 SignalR 集线器/WebSockets 都停止工作。该网站可以在这里找到:
signalr.js:5053 WebSocket connection to 'wss://app.topswagcode.com/chatHub?id=v_UmTZyB9v962n44Wf2-Kg' failed:
(anonymous) @ signalr.js:5053
(anonymous) @ signalr.js:5034
step @ signalr.js:4995
(anonymous) @ signalr.js:4976
(anonymous) @ signalr.js:4970
__awaiter @ signalr.js:4966
WebSocketTransport.connect @ signalr.js:5016
HttpConnection.startTransport @ signalr.js:4149
(anonymous) @ signalr.js:4099
step @ signalr.js:3710
(anonymous) @ signalr.js:3691
(anonymous) @ signalr.js:3685
__awaiter @ signalr.js:3681
HttpConnection.createTransport @ signalr.js:4052
(anonymous) @ signalr.js:3970
step @ signalr.js:3710
(anonymous) @ signalr.js:3691
fulfilled @ signalr.js:3682
signalr.js:2150 [2021-06-11T06:43:20.004Z] Error: Failed to …Run Code Online (Sandbox Code Playgroud) 我的域名在 Google Chrome 上显示为不安全。
我以 root 身份登录到我的服务器并运行了以下命令:
certbot certificates
Run Code Online (Sandbox Code Playgroud)
它产生了以下输出: certbot 证书有效。
Found the following certificates:
Certificate Name: xyz.com
Domains: xyz.com www.xyz.com
Expiry date: 2022-01-14 (valid: 58 days)
Certificate path: /etc/letsencrypt/live/xyz.com/fullchain.pem
Private key path: ....
Run Code Online (Sandbox Code Playgroud)
然而,该网站显示为不安全。
之后我跑了:
sudo systemctl restart nginx
Run Code Online (Sandbox Code Playgroud)
然后网站就变得安全了。
我该怎么做才能不需要每次更新证书时都重新启动 nginx?
我在 ubuntu 18.04.5 上使用 Nginx 1.14.0 我的客户端版本是: certbot 0.31.0
在 Amazon Linux 2 上安装 certbot/letsencrypt 并在 nginx 上启用 HTTPS(适用于 apache 的类似过程)
Let's Encrypt Certbot 默认密钥类型已更改为最新版本 2.0.0 的 ECDSA。如何指定生成RSA或ECDSA的密钥类型?
certbot ×10
lets-encrypt ×5
nginx ×5
ssl ×2
amazon-ec2 ×1
apache ×1
asp.net-core ×1
django ×1
dns ×1
docker ×1
ecdsa ×1
nginx-config ×1
rsa ×1
signalr ×1
systemd ×1
ubuntu ×1