業務用エアコン関連の技術情報、エラーコード、環境問題対策に関する別サイト「エアコンの安全な修理・適切なフロン回収」

openSUSE Tumbleweed : WEBサ-バーSSL化

1.SSL証明書を取得する (Let's Encrypt)

1.1 事前準備

1.mod_sslを有効にする

# a2enmod ssl

2.パッケージ管理システムSnappyインストール
Let’s EncryptのSSL証明書発行ツール「certbot」は2021年以降は「snap」を利用したインストールが推奨されていますので、まずSnapdをインストールします。

snappyリポジトリを追加します:

# zypper addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Tumbleweed snappy

GPGキーをインポートします:

# zypper --gpg-auto-import-keys refresh

パッケージキャッシュをアップグレードして、新しいsnappyリポジトリを含めます:

# zypper dup --from snappy

snapdをインストール

# zypper -n install snapd

その後、再起動、ログアウト/ログイン、または/etc/profileのソースを実行して、/snap/binをPATHに追加する必要があります。さらに、次のコマンドを使用して、snapdサービスとsnapd.apparmorサービスの両方を有効にして起動します:

# systemctl enable --now snapd
# systemctl enable --now snapd.apparmor

クラシックスナップのサポートを有効にする

# ln -s /var/lib/snapd/snap /snap

snapd のバージョンを最新にする

# snap install core

core パッケージを更新

# snap refresh core

バージョン確認

# snap --version
snap                 2.75.2
snapd                2.75.2
series               16
opensuse-tumbleweed  20260619
kernel               7.0.12-1-default
architecture         amd64

1.2 証明書の取得

certbotパッケージをインストールして、Letsencrypt証明書を取得します

# snap install certbot --classic
certbot 5.6.0 from Certbot Project (certbot-eff✓) installed

# certbot certonly --webroot -w /srv/www/htdocs/<FQDN> -d <FQDN>

# 初回のみメールアドレスの登録と利用条件への同意が必要
# 受信可能なメールアドレスを指定

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address or hit Enter to skip.
 (Enter 'c' to cancel): [mail address]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at:
https://letsencrypt.org/documents/LE-SA-v1.7-June-04-2026.pdf
You must agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.
Requesting a certificate for [FQDN]

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/ [FQDN]/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/ [FQDN]/privkey.pem
This certificate expires on 2026-09-21.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - L

「Successfully received certificate.」と表示されれば成功
# メッセージ中に記載の通り [/etc/letsencrypt/live/<FQDN>/] 配下に次の証明書が取得されている

# cert.pem ⇒ SSLサーバー証明書(公開鍵含む)
# chain.pem ⇒ 中間証明書
# fullchain.pem ⇒ cert.pem と chain.pem が結合されたファイル
# privkey.pem ⇒ 公開鍵に対する秘密鍵

2. WebサーバーSSL化

2.1 SSLの設定

# a2enmod -l
actions alias auth_basic authn_core authn_file authz_host authz_groupfile authz_core authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl socache_shmcb userdir reqtimeout cgid php8
# vi /etc/apache2/listen.conf

17行目:コメント解除
Listen 443
# vi /etc/apache2/vhosts.d/default-ssl.conf

# 新規作成して、下記内容を記述
<VirtualHost *:443>
DocumentRoot "/srv/www/htdocs/[FQDN]"
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/letsencrypt/live/[FQDN]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[FQDN]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[FQDN]/chain.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/srv/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>

apache再起動

# systemctl restart apache2

2.2 HTTP 通信を HTTPS へリダイレクト

HTTP 通信を HTTPS へリダイレクトする場合はバーチャルホスト設定ファイル"vhost.conf"に下記を追記する

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# vi /etc/apache2/vhosts.d/vhost.conf

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

ServerName [FQDN]
ServerAdmin [Email address]
DocumentRoot /srv/www/htdocs/[FQDN]
ErrorLog /var/log/apache2/[FQDN].error.log
CustomLog /var/log/apache2/[FQDN].access.log combined
LogLevel warn
</VirtualHost>

rewriteを有効にする

# a2enmod rewrite

apache再起動

# systemctl restart apache2

Firewalld を有効にしている場合は HTTPS サービスの許可が必要。HTTPS は 443/TCP を使用します。

# firewall-cmd --add-service=https --permanent
success
# firewall-cmd --reload
success