httpsプロトコルを介した変換のためのSSLサポートを備えたicecast2サーバーのインストール

問題の声明。 組織のローカルネットワークからの音声ブロードキャストは、Let`s Encryptからの無料のSSL証明書がインストールされたサイトを通じて実行されます。 ただし、インターネットブラウザーでは、サイトのページにアクセスすると、ブロードキャストが保護されていないhttpプロトコルを介しているため、混合コンテンツの存在に関する警告が表示されます。 混合コンテンツの削除が必要です。 これを行うために、Icecast2およびIceS2を介してhttpsセキュアプロトコルを介してオーディオブロードキャストを編成することが決定されました。



この問題の解決策を長期にわたって検索した結果、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証明書を使用して、この問題を解決します。 しかし、これは私にはうまくいきませんでした。



All Articles