使用 Let's Encrypt 为 Icecast2 添加 HTTPS 支持

Add HTTPS support to Icecast2 using Let's Encrypt

我在默认端口 8000 上有一个 Icecast2 服务器 运行,我想使用免费的 Let's Encrypt 证书为其添加 HTTPs 支持。例如:

我看到 Icecast2 内部支持 SSL,但有时该选项在您的发行版中不可用。此外,我发现使用内部 SSL 支持并没有与 Let's Encrypt 集成得很好,因为您必须将两个证书连接到一个文件中。

https://icecast.org/docs/icecast-2.4.1/config-file.html

https://community.letsencrypt.org/t/icecast2-and-letsencrypt/9329

问题:使用 Let's Encrypt 添加 https:// 对 Icecast2 支持的建议方法是什么?

例如使用官方 icecast2 package from Debian GNU/Linux stable 并且不编译任何东西。请注意,在服务器上我已经有一个 Apache2 网络服务器 运行,如果它有用的话。谢谢!

你的 icecast2 包中有原生 SSL 支持吗?

如果您喜欢使用官方包,请首先检查您已安装的 icecast2 包中是否支持 SSL:

ldd /usr/bin/icecast2 | grep ssl

如果您没有看到任何东西,那么您没有 对 SSL 的本机支持。在这种情况下,您可以选择以下选项之一:

  • A: 删除软件包并安装其他东西
  • B: 使用 nginx
  • 设置前端网络服务器
  • C:使用 Apache 设置前端网络服务器(← 这个答案)

如何使用 Apache 设置支持 HTTPs 的前端网络服务器,并为 Icecast2 提供服务

如果您想 https:// 支持 Icecast,您可以安装 Apache 并将其用作前端 Web 服务器,监听标准端口 443。使用 Let's Encrypt 创建免费证书很容易。一旦成功,您就可以将流量传递给 Icecast2。

如果您使用 Debian GNU/Linux,这里有指南:

解决方案的核心是像这样启用 apache VirtualHost:

<virtualhost *:443>

  ServerName example.com

  # this path is unuseful and used only for Let's Encrypt's temporary files during the renewal process
  DocumentRoot /var/www/html

  # send all traffic to Icecast in plaintext
  <Location "/">
    ProxyPass        http://localhost:8000/
    ProxyPassReverse http://localhost:8000/
  </Location>

  # these files are served from /var/www/html to serve Let's Encrypt temporary files
  <Location "/.well-known/acme-challenge">
    ProxyPass !
  </Location>

  <IfFile /etc/letsencrypt/live/example.com/cert.pem>
    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
  </IfFile>

</virtualhost>

<VirtualHost *:80>
  ServerName example.com

  Redirect / https://example.com/
</VirtualHost>

然后启用它并颁发您的证书:

letsencrypt certonly --domain example.com --webroot --webroot-path /var/www/html

但是上面的指南可能会更好地解释这一点。

目前该指南不涵盖 nginx,但其他答案可能会提供使用该技术以及 apache2 的类似实际示例。使用像 apache2nginx 这样的前端网络服务器的好处是您不必接触 Icecast。此外,它允许在您的 already-existing 网站(如果有)中提供 Icecast2。


其他答案可能想谈谈 Icecast2 与 Let's Encrypt 的本机接口。目前,我只能分享 apache2 方法,这是我多年来一直在生产中使用的方法,没有任何问题。此外,由于我使用 Debian GNU/Linux,我的软件包不支持 SSL。