この問題の解決策を長期にわたって検索した結果、Let`s Encryptの無料の証明書を使用してSSLをサポートするIcecast2サーバーがインストールされました。 Icecast2サーバーの開発者がSSLサポートを宣言しているという事実にもかかわらず、ソースコードからサーバーをコンパイルする必要があります。 OpenSSLからの証明書を使用してIcecast2サーバーをコンパイルおよびインストールする手順をここで説明します 。 ただし、現時点では、ブラウザはopensslを介して生成された証明書をっています。 したがって、OpenSSL証明書の代わりに、ネットワークのブロードキャスト元の外部IPアドレスに関連付けられたドメイン名で生成されたLet`s Encryptの無料の証明書を使用します。
以下で説明するすべての操作は、Linux Mintディストリビューションで実行されました。
そのため、最初にシステムを更新し、すぐに削除するために最も一般的な方法でIcecast2をインストールします。 これは、Icecast2サーバーの構成を簡単にするためです。
icecast2を削除します。
sudo apt remove icecast2
システムにicecast2構成ファイルが存在することを確認してください(オプション):
ls -l /etc/init.d/ /etc/ | grep icecast
ソースからicecast2をビルドするためのツールをインストールします。
sudo apt install git gcc build-essential automake autoconf libtool checkinstall
icecast2サーバーの後続のコンパイルの依存関係を満たします。
sudo apt install libcurl4-openssl-dev libxslt1-dev libxml2-dev libogg-dev libvorbis-dev libflac-dev libtheora-dev libssl-dev libspeex-dev
一時的なソースファイルをホストするディレクトリを作成します。
mkdir src cd src
icecast2の最新リリースを複製します。
git clone --recursive https://git.xiph.org/icecast-server.git
構成スクリプトを作成します。
cd icecast-server; ./autogen.sh
SSLサポート用のソースコードの構成:
./configure --with-curl --with-openssl
SSLサポートが構成に存在することを確認します(lsslの存在):
grep lssl config.status
コンパイルします:
make
icecast2をインストールします。
sudo checkinstall
コマンドをテストするプロセスで、checkinstallユーティリティはパッケージの説明を追加するように求めます。 また、パッケージのバージョンを必ず指定してください。そうしないと、コマンドは「パッケージのバージョンが数字で始まっていません」というエラーをスローします。
次に、access.logおよびerror.logファイルを作成します(icecast2がすでにシステムにインストールされている場合は、既存のものを使用できます)。
sudo mkdir /var/log/icecast2 cd /var/log/icecast2 sudo touch access.log sudo touch error.log
Let`s EncryptのSSL証明書をicecast.pemという名前に変更し、access.logファイルとerror.logファイルを含む1つのディレクトリに入れて、ディレクトリとそのファイルへの権限を登録します。
sudo chown -R icecast2:icecast /var/log/icecast2 cd /var/log/icecast2 sudo chmod -R 777 *
/ usr / local / etc /ディレクトリ(おそらく既存のファイルを使用できます)からicecast.xmlファイルを編集し、access.logファイルとerror.logファイル、およびicecast.pem証明書を使用してディレクトリへのパスを調整します。 (後者を作成するには、fullchain.pemおよびprivkey.pemファイルの内容を/ etc / letsencrypt / live / domain_nameディレクトリからコピーし、1つのファイルでテキストエディターでそれらを開き、icecast.pemという名前で保存する必要があります。) icecast.xmlには2つのポートが登録されています。1つはhttp接続(8000)用で、もう1つは安全なhttps接続(8443)用です。 SSL証明書へのパスとhttpsポートの行はコメント解除する必要があります。 sslの代わりに、tlsがファイルに書き込まれる場合があります-違いはわかりませんでした。
httpポート8000を介して、IceS2またはオーディオデータを読み取り、Icecast2サーバーに転送する同様のアプリケーションとの接続があることを明確にする必要があります。 存在しない場合、この設計全体は機能しません。 このエラーはインターネットでは非常に一般的です。
icecast2サーバーを起動します。
/usr/local/bin/icecast -c /usr/local/etc/icecast.xml
error.logファイルを見て、icecast2が証明書を確認して食べたことを確認します。 インターネットブラウザーでポート8000および8443を開き、すべてが正常に機能することを確信しています。
オペレーティングシステムが「オプション」-「スタートアップ」サービスを介して起動されるとき、icecast2の自動起動を設定し、そこで前の段落から開始コマンドを設定します。
ソースからIcecast2をコンパイルせずにLet`s EncryptのSSL証明書を使用して、この問題を解決します。 しかし、これは私にはうまくいきませんでした。