2023-01-02 バージョンでの https 有効化方法について
- こちらの用意した証明書で実装する場合
原則、本手法が基本になります。
a) 動作させる端末にルート証明書を予めインストールしておく
http://smpd.local/ 直下においたルート証明書をダウンロードして各ブラウザの証明書保管場所に保存して下さい。
| OS |
ブラウザ |
ファイル名 |
備考 |
| Windows |
edge chrome |
localCA.crt |
OSの証明書ストレージ |
| WIndows |
FireFox |
localCA.crt |
FireFox独自の証明書ストレージ |
Linux FreeBSD等 |
chrome FireFox |
localCA.crt |
各ブラウザの証明書ストレージ |
| Android |
chrome FireFox |
localCA.der.crt |
OSの証明書ストレージ内※1 |
iphone ipad |
chrome safari |
localCA.crt |
OSの証明書ストレージ※2 |
※1 Android の場合、「設定 > パスワードとセキュリティ > システムセキュリティ > 認証情報ストレージ > ストレージから証明書をインストール」(手元のOneplus8 Android V13の場合)、
「設定 > セキュリティ > 暗号化と認証情報 > SDカードからインストール」(手元のXperia XZ2 Android V11の場合)
等の操作でサーバ証明書をインストールできます。
※2 Apple 社製品の場合、ルート証明書は 「Safari からのダウンロード」か「メールでの添付ファイルによる送付」以外はインストールできません。
また、ダウンロード後 「設定 > 一般 > VPNとデバイス管理 >ダウンロード済みプロファイルのインストール作業」と「設定 > 情報 > 証明書信頼設定」の2つの設定が必要になります。
ちなみにChrome・FireFoxともに証明書の設定画面は「設定>プライバシーとセキュリティ」からアクセス可能です。
b) /opt/cert ディレクトリの systemd 関連ファイルを複写
remakeCert.service, remakeCert.timer を /etc/systemd/system に複写します。
最近のセキュリティ強化により smpd サーバで使用するサーバ証明書は有効期限が13ヶ月以下にしないとブラウザ側で弾かれる現象が発生しています。
このため、smpd で使用するサーバ証明書も有効期限が13ヶ月以内となっていますが、証明書の再発行+ympdの再起動をsystemdのタイマーで処理させるための設定ファイルを複写するという訳です。
ちなみにremakeCert.timerのタイマー設定は毎年1月1日の4:00となっているため、変更したい方は当該ファイルを編集して下さい。
c) systemd のタイマー設定を有効化
まず systemctl daemon-reload で設定ファイルをsystemdに反映させます。
次に systemctl enable remakeCert.timer で remakeCert.timer を有効化します。
さらに systemctl start remakeCert.timer で remakeCert.timer を開始させればOKです。
一応動作を確認する際は systemctl list-timers と入力し、以下の状況であることを確認して下さい。
NEXT LEFT LAST PASSED UNIT ACTIVATES
Mon 2023-01-02 10:23:30 JST 14min left Sun 2023-01-01 10:23:30 JST 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2024-01-01 04:00:00 JST 11 months 28 days left Sun 2023-01-01 04:00:04 JST 1 day 6h ago remakeCert.timer remakeCert.service
2 timers listed.
Pass --all to see loaded but inactive timers, too.
d) ympdのhttps 関連設定を有効化
まず、ympd.socketを書き換えます。
[Socket]
#ListenStream=80
ListenStream=443
KeepAlive=true
PassCredentials=true
[Install]
WantedBy=sockets.target
もともとは ListenStream=443 の行は記載なしだったと思いますが、本行を ListenStream=80 の真下に追加し、ListenStream=80 の先頭に#を付けてコメントアウト化して下さい。
次に今回添付のympd.serviceを書き換えします。
[Unit]
Description=ympd server daemon
Requires=network.target local-fs.target
After=mpd.service
[Service]
EnvironmentFile=/etc/environment
Type=simple
ExecStartPre=/usr/bin/ympd-plus.sh
ExecStart=/usr/bin/ympd -h /run/mpd/socket --webport 80 -i 200 --documentroot /var/lib/mpd/music
#ExecStart=/usr/bin/ympd -h /run/mpd/socket --webport "ssl://443:/var/lib/mpd/music/ssl.pem" -i 200 --documentroot /var/lib/mpd/music
User=root
CPUSchedulingPolicy=other
CPUAffinity=3
[Install]
WantedBy=multi-user.target
ExecStart の --webport 80 と書かれている行をコメントアウトし、その下の行を有効化して下さい。
両方のファイル編集後、以下のコマンドでympdをhttpsで起動させます。
systemctl daemon-reload
systemctl stop ympd.service
systemctl stop ympd.socket
systemctl start ympd.socket
systemctl start ympd.service
- ルート証明書を自分で作る場合
/opt/cert/localCA にて genRootCA.sh を実行してルート証明書を作成後、
/opt/cert にて genSVcert.sh を実行してサーバ証明書を作り直して下さい。
生成したサーバ証明書は以下のコマンドで /var/lib/mpd/music に複写します(/opt/cert のファイル名と /var/lib/mpd/music のファイルが名が異なります。
cp /opt/cert/smpd.loca.pem /var/lib/mpd/music/ssl.pem
ルート証明書も/var/lib/mpd/musicに複写し直し、前項の通り使用する端末に配布して下さい。
- ルート証明書はそのまま使うが、サーバ証明書だけは作り直したい。
2項の「/opt/cert にて genSVcert.sh を実行してサーバ証明書を作り直して下さい。」以降だけを実施して下さい。
現在保存されているルート証明書でサーバ証明書を作り直しします。