Readmine6をHTTPS化する

この記事では、自力でLinuxサーバに構築したRedmine6をHTTPS化する方法について紹介しています。
Redmine6の構築手順については、以下を参考にしてください。
なお、HTTPS化のためにSSLサーバ証明書が手元に準備できている前提で解説を進めていきます。
Readmine6をHTTPS化する
今回構築したRedmine6を構成するRailsを動かすためのフロントエンドとしてPumaを利用しています。
HTTPS化設定
Pumaに対するHTTPS化の設定は以下のとおりです。
# vi /opt/redmine/config/puma.rb
directory '/opt/redmine'
environment 'production'
#bind 'tcp://0.0.0.0:3000'
ssl_bind '0.0.0.0','443',{
key:'/opt/redmine/ssl/server.key',
cert:'/opt/redmine/ssl/server.crt',
verify_mode: 'none'
}
workers 2
threads 1,6
stdout_redirect 'log/puma.stdout.log', 'log/puma.stderr.log', true
pidfile 'tmp/puma.pid'
state_path 'tmp/puma.state'
activate_control_app
上記の設定値にすると、HTTPでRedmine6にアクセスできなくなるので注意してください。
サーバ証明書と秘密鍵は、上記の例では/opt/redmine配下にsslというディレクトリを作成して配置しています。ご自身のサーバ証明書と秘密鍵の配置場所を設定してください。
「verify_mode」は証明書の検証方法です。イントラネット内の運用を想定している場合は証明書の検証なし(none)でも問題ないでしょう。外部公開する場合は、証明書検証あり(peer)を設定することを推奨しますが、その場合は認証局の証明書(CA証明書)が必要となるため注意が必要です。
サーバ側のファイアーウォールで443ポート(HTTPS)が解放されていることも忘れずに確認してください。
設定値に間違いがないか、構文チェックします。
# ruby -c /opt/redmine/config/puma.rb
Syntax OK
フロントエンドの再起動
設定が終わったら、Pumaを再起動します。Pumaはsystemdで起動させていますので、以下のように再起動することができます。
# systemctl restart puma
# systemctl status puma
● puma.service - Puma HTTP Server for Redmine
Loaded: loaded (/etc/systemd/system/puma.service; enabled; vendor preset: di>
Active: active (running) since Sat 2025-03-01 07:50:56 UTC; 7h ago
Main PID: 29 (bundle)
Tasks: 25 (limit: 50349)
Memory: 356.1M
CGroup: /machine.slice/machine-libpod_pod_bdad3dfd3638045d36c6b5188c4a45fd11>
tq 29 puma 6.6.0 (ssl://0.0.0.0:443?cert=%2Fopt%2Fredmine%2Fssl%2Fre>
tq295 puma: cluster worker 0: 29 [redmine]
mq299 puma: cluster worker 1: 29 [redmine]
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Puma version: 6.6.0 ("R>
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Ruby version: ruby 3.3.>
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Min threads: 1
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Max threads: 6
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Environment: production
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Master PID: 29
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Workers: 2
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Restarts: (✔) hot (>
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] * Listening on ssl://0.0.>
Mar 01 07:51:02 redmin.reafnex.local bundle[29]: [29] Use Ctrl-C to stop
Pumaが正常起動したら、HTTPS化の作業は完了です。
Redmine6にHTTPSでアクセスする
Microfoft Edgeで開いてみると、以下のようになっているはずです。

アドレスバーに鍵マークが表示されていれば、接続がセキュリティで保護された通信になっています。
まとめ
いかがでしたでしょうか。
今回は、自力でLinuxサーバに構築したRedmine6をHTTPS化する方法について紹介しました。SSLサーバ証明書が手元にある場合は、簡単にHTTPS化することができます。
イントラネット内で利用する場合は、いわゆるオレオレ証明書でも問題ないでしょう。
企業利用する場合は、信頼された証明書機関から発行されたSSLサーバ証明書を利用した方がよいでしょう。
証明書の価格は年額べーすで数千円から十数万円と幅がありますが、企業の信頼性を高める意味では、多少高くても企業認証(OV)や拡張認証(EV)を利用すべきです。
スモールビジネスや個人利用であれば、年額ベースで数千円程度から購入可能なドメイン認証(DV)やLet’s Encryptのような無料のドメイン認証(DV)がおすすめです。
参考になれば幸いです。
システムのお悩みについてご相談ください
SOHOのシステム運用管理に関するお悩みごとについて、なんでもお気兼ねなくご相談ください。
現役システムエンジニアのスタッフが、ボランティアでご相談にご対応させていただきます。