Introduction

前回 の続き。

最近は自宅ネットワーク内であっても、SSL 化を実施し、セキュリティの強化及びノウハウの習得に努めている。
つまり備忘録。

How to do?

前提となる環境は

  • Ubuntu: 24.04 LTS
  • Snipe-IT: v8.2.1

1. 設定ファイルのバックアップ

Apache2 で動いていると思うので、設定ファイルをバックアップ

1
$ sudo cp /etc/apache2/sites-available/snipeit.conf /etc/apache2/sites-available/snipeit.conf.bak

2. 証明書の用意

まず、証明書と鍵を格納するディレクトリ (とログの出力先) を用意。

1
2
3
sudo mkdir  /etc/certs/
sudo mkdir /etc/private/
sudo mkdir /var/log/snipeit/

続いて、

  • 証明書 (*.crt) を /etc/certs/ にコピー
  • 鍵 (*.key) を /etc/certs/ にコピー

します。
それぞれのファイル名は、わかりやすく SSL 化のために用意したドメイン名にしておきます。

ここでは snipeit.taktak.com とします。

3. 設定ファイルの編集

下記は初期状態の設定ファイル /etc/apache2/sites-available/snipeit.conf
Snipe-IT の環境構築によっては異なる可能性がある点に注意。

1
2
3
4
5
6
7
8
9
10
<VirtualHost *:80>
<Directory /var/www/html/snipeit/public>
Allow From All
AllowOverride All
Options -Indexes
</Directory>

DocumentRoot /var/www/html/snipeit/public
ServerName snipeit.taktak.com
</VirtualHost>

上記を下記のように変更。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<VirtualHost *:80>
ServerName snipeit.taktak.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
ServerName snipeit.taktak.com
CustomLog /var/log/snipeit/snipeit_access.log combined
ErrorLog /var/log/snipeit/snipeit_error.log

DocumentRoot /var/www/html/snipeit/public
<Directory /var/www/html/snipeit/public>
Options -MultiViews
AllowOverride All
Require all granted
</Directory>

SSLEngine on
Protocols h2 http/1.1
SSLCertificateFile /etc/certs/snipeit.taktak.com.crt
SSLCertificateKeyFile /etc/private/snipeit.taktak.com.key
# SSLCACertificateFile /etc/certs/snipeit.taktak.com.CA.crt

Header always set Strict-Transport-Security "max-age=63072000"
Header set X-Content-Type-Options "nosniff"
Header always append X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</VirtualHost>

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

そして、/var/www/html/snipeit/.env を変更。

1
2
3
4
5
# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
- APP_URL=http://esxi-vm07
+ APP_URL=http://snipeit.taktak.com

APP_URLhttps である必要はなく http://<FQDN> であれば OK。

4. モジュールの追加と再起動

SSL に必要なモジュールの追加、設定ファイルの構文チェックなどを実施し、Apache を再起動。

sudo a2ensite snipeit.conf
sudo a2enmod ssl
sudo a2enmod headers
sudo apache2ctl configtest
sudo systemctl restart apache2

以上で無事に SSL 化されました。

Snipe-IT