いつもお世話になっているラジオ局のホームページが更新できなくなったとのことで、協力を頼まれた。SSL化も含め備忘として。
以前にもスタジオの動画のライブストリーミングでお手伝いしたのでやってみた。
局のPCにDreamWeaverがインストールされており、そこで修正したデータをFTPでアップロードするのだが、どうやらパスワードが消えてしまい、アップできなくなった模様。サーバーへログインもできない。ついでながら、SSL化もされてなかったので対応することに。
動画のライブストリーミングにはさくらサーバーを使い、 NginX で対応していたが、これもSSL化はしていなかった。
とりあえず別のサーバーを立ててApache でホームページをSSL化してみたが、そのホームページから非SSLのライブストリーミングは参照できない。
考えた結果、同じサーバーにApache2とNginXを入れて、ホームページ用とストリーミング用にそれぞれ稼働させてみることに。サーバー同じなら証明書が共用できるのでは?という目論見。SSL化は無料の LetsEncrypt を使用する。
ストリーミングの際は CentOS を使ったが、今は Rocky になっていってるということでサーバーもまず RockyLinux9で初期化。Swap 領域をスタートアップスクリプトで確保(というか最初Swapなしでやっていたら途中でインストールできなくなったw)。
WEB、FTPのほかにストリーミングのアップロードと配信用に ポートは 1935,8080,8443を開けておく。
アプリの管理も dnf とかに変わっているw vsftpd, Apache, NginX, rtmp をインストール。
https://notebook.suzumeno.com/rockylinux_vsftpd_install/
https://qiita.com/T_Tsan/items/9c456c4ce503b5339b11
https://centossrv.com/nginx-nginx-rtmp-module.shtml
NginXは1.26.2。途中、wget, tar, git, gcc も。MakeするのにCコンパイラないとねw
NginXについては rtmp でのアップロードと暗号化するため以下でインストール
./configure --add-module=nginx-rtmp-module/ --with-http_ssl_module --with-http_v2_module --with-http_realip_module
さらに配信用に ffmpeg も。
https://qiita.com/24Century/items/33f92bfc960d5126f916
そしてSSL化
LET’S ENCRYPTを標準外のポートでDNSチャレンジにて取得する
https://rp-lifework.com/?page_id=783
今回はバリュードメインを使用していたが、TXTレコードの書き方でちょっと手間取った。バリュードメインのDNS設定のところの説明をみてやるとうまくいかず。
結局、
txt _acme-challenge.(MyDomain) (KeyValue)
という単純な書き方でOKだった。
これで /etc/letsencrypt/live/(MyDomain) の下に証明書(へのシンボリックリンク)が生成される。
NginXは /usr/local/nginx/conf/nginx.conf に以下を追加
server {
listen 8443 ssl;
server_name localhost;
ssl_certificate /etc/letsencrypt/live/(MyDomain)/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/(MyDomain)/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
Apache の SSL 設定は以下を参考
https://korodes.com/rockyl9-1_08/
追加モジュールを外していたため、 /etc/httpd/conf.modules.d/00-ssl.conf に
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so を追加
またhttp: でのアクセスを https: にリダイレクトするため、00-base.conf にて rewrite モジュールもロードするよう設定
これでホームページとその中で参照している動画ライブストリーミングも SSL アクセス可能に。
ちゃんと証明書は共用できた。うまくやればNginXだけでホームページもストリーミングもいけるのかもしれないけど、まあ動いているので当面はこれでいこう。
そうそう、証明書の更新設定もやっておかないとね。