HTTPS/SSL 无法与 Cups 配合使用

HTTPS/SSL 无法与 Cups 配合使用

我有一个网站

我的站点

和一台打印机

mysite.com:631/打印机/myprinter

嗯,https:// www.mysite.com 运行正常且经过验证,但 https:// www.mysite.com:631/printers/myprinter 却不行。它说连接不安全,我无法安装打印机。

这是我在 CUPS 服务器的 conf.d 中的内容:

DefaultEncryption Required
ServerCertificate /etc/letsencrypt/live/mysite/cert.pem
ServerKey /etc/letsencrypt/live/mysite/privkey.pem
SSLPort 443

有什么帮助可以使打印机和站点变为 https 吗?

答案1

将您的 SSL(例如 LetsEncrypt )复制到 cups 目录,如下所示:

cat /etc/letsencrypt/live/yourdomain.com/fullchain.pem >> /etc/cups/ssl/server.crt
cat /etc/letsencrypt/live/yourdomain.com/privkey.pem >> /etc/cups/ssl/server.key

重新启动cups服务器:

systemctl restart cups  # on CentOS

答案2

因此,您还需要确保 /etc/cups/ssl 中只有两个文件。server.key 和 server.crt,向此目录添加任何额外的文件都会破坏我的 ssl。

但请确保它们链接到你的 lets encrypt 文件夹,正如其他人所说的那样。

答案3

我在这里时会添加一些注释。

我正在使用 Nginx 通过 CUPS IP/端口转发一个漂亮的域名。

地点这里(与我无关)使它点击。

无论如何,在我的 nginx 配置中我有一个这样的位置块:

location /printers {
    // this is the info that came from the site mentioned
    proxy_pass http://localhost:631;
    proxy_set_header Host "127.0.0.1";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
}

我使用 Lets Encrypt 生成了我的证书,转到 SchiWaGoA 提到的同一文件夹,symlink因为cat我遇到了权限问题,例如:

ln -s /lets-encrypt-path/fullchain.pem /cups-ssl-path/server.crt (same as above)

cupds.conf

Listen localhost:631

<Location />
  Order allow, deny
  Allow from @LOCAL
</Location>

在这个文件的底部我添加了加密内容,因为我的文件中没有它

DefaultEncryption Required
ServerCertificate /etc/cups/ssl/server.crt
ServerKey /etc/cups/ssl/server.key

就是这样,我能够使用带有https://example.com/printers/printer-nameURL 方案的共享主机名 URL 以及 MS PS 驱动程序在我的 Windows 10 客户端上添加打印机。

注意。我还没有 100% 确定<Location />,所以请检查它是否适合您的需求。

将添加 atm,我注意到服务器一直在关闭,不像我以前的非 https CUPS,很奇怪。

看起来你需要添加此行cupsd.conf

ServerAlias *

无论如何,这是我的问题之一,我会监控它是否有所改善。

重启后似乎有所改善,如果我发现它经常宕机的具体原因,我会报告。非 https 的已经上线几个月了。

我最终修改了 systemd 文件

Restart=always
RestartSec=3

此外,cert 行应该进入,cups-files.conf而不是cupsd.conf根据 cups 的调试日志。现在不是问题,但将来会成为问题。

相关内容