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
