update_cert.py(HTTPS 証明書の自動更新)
update_cert.py は、HTTPS 証明書の有効期限を確認し、 必要に応じて自動で更新するスクリプトです。
本スクリプトは、本サイト管理者と AI(Microsoft Copilot)との共同制作教材として作成されました。 systemd と連携し、毎日自動でチェックを行います。
最終更新:
スクリプトの配置方法(localCA フォルダへの配置)
update_cert.py は /home/(あなたのユーザー名)/localCA/ に配置して使用します。
Linux では、ユーザーごとにホームフォルダがあり、次のような構造になっています:
/home/あなたのユーザー名/localCA/
例:Mint のデフォルトユーザーが mint の場合は次のようになります:
/home/mint/localCA/
手順 1:Windows で ZIP をダウンロードし、展開する
- 本サイトから update-cert.zip をダウンロード
- ZIP を展開し、フォルダ内のファイルを確認
- USB メモリーに以下の 3 つをコピー
- update_cert.py
- update-cert.service
- update-cert.timer
手順 2:Linux Mint に USB を挿す
USB は自動的に次のような場所にマウントされます:
/media/あなたのユーザー名/USBの名前/
例:ユーザー名が mint、USB の名前が USB の場合:
/media/mint/USB
手順 3:update_cert.py を localCA にコピー
USB に保存した update_cert.py を localCA にコピーします。
cp /media/あなたのユーザー名/USBの名前/update_cert.py /home/あなたのユーザー名/localCA/
手順 4:実行権限を付与
chmod +x /home/あなたのユーザー名/localCA/update_cert.py
手順 5:service と timer を配置
USB に保存した service/timer を systemd のフォルダにコピーします。
sudo cp /media/あなたのユーザー名/USBの名前/update-cert.service /etc/systemd/system/
sudo cp /media/あなたのユーザー名/USBの名前/update-cert.timer /etc/systemd/system/
/etc/systemd/system/ は systemd の公式ユニット配置場所であり、 教育現場での再現性が高く、管理もしやすいため推奨しています。
■ timer を変更したら必要な操作
sudo systemctl daemon-reload
sudo systemctl restart update-cert.timer
5. タイマーの状態を確認する
systemctl list-timers | grep update-cert
正常に動作している場合の例:
$ systemctl list-timers | grep update-cert Mon 2026-02-16 07:30:00 JST 3 days left n/a n/a update-cert.timer update-cert.service
- Mon 2026-02-16 07:30:00 JST: 次回にタイマーが実行される日時
- 3 days left: 次回実行までの残り時間
- 最初の n/a: 前回実行日時(初回前なので n/a =正常)
- 次の n/a: 前回実行からの経過時間(初回前なので n/a =正常)
- update-cert.timer: タイマーのユニット名
- update-cert.service: 実際に起動されるサービス
「次回実行日時」と「left(残り時間)」が表示されていれば、
タイマーは正常に有効化されています。
6. ログを確認する
journalctl -u update-cert.service -n 50
※ update_cert.py を手動で実行したい場合
次のように直接実行できます。
sudo /home/あなたのユーザー名/localCA/update_cert.py
4. スクリプト・サービス・タイマー全文(コメント入り)
以下は、本教材で使用する 3 つのファイルの全文です。
ユーザー名 と ドメイン名 を自分の環境に合わせて変更してください。
■ 注意事項(必ず読んでください)
- /home/miyada/ の “miyada” は「あなたの Linux ユーザー名」です。
- miyada.home は「証明書作成時に指定したドメイン名(CN)」です。
- ユーザー名とドメイン名は一致していなくても問題ありません。
- update-cert.service の ExecStart のパスは必ず自分の環境に合わせて変更してください。
- update-cert.timer の OnCalendar= は「いつ実行するか」を決める重要設定です。
update_cert.py(クリックで展開)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Created by Inajin (InaPC Linux Lab)
# AI(Microsoft Copilot)との共同制作教材
#
# Copyright (c) 2026 Inajin
# 本スクリプトは教育目的での利用・改変を自由に行えます。
# ただし、著作権表記は削除せず残してください。
import subprocess
import datetime
import os
import OpenSSL
# "/home/miyada/localCA" ← miyada はご自身のユーザー名に変更してください。
# miyada.home ← これは「証明書作成時に指定したドメイン名」です。
# 以下はユーザー名とドメイン名が同じですが、ユーザー名とドメイン名は一致していなくても問題ありません。
BASE = "/home/miyada/localCA"
CRT = f"{BASE}/miyada.home.crt"
KEY = f"{BASE}/miyada.home.key"
CSR = f"{BASE}/miyada.home.csr"
CA_CRT = f"{BASE}/ca.crt"
CA_KEY = f"{BASE}/ca.key"
SAN = f"{BASE}/san.cnf"
update-cert.service(クリックで展開)
[Unit]
Description=Local CA Certificate Auto Renewal
[Service]
Type=oneshot
# ExecStart のユーザー名部分を必ず変更してください
# 例:/home/mint/localCA/update_cert.py
ExecStart=/usr/bin/python3 /home/miyada/localCA/update_cert.py
update-cert.timer(クリックで展開)
[Unit]
Description=Certificate Renewal Timer
[Timer]
# 実行時刻はここで決まります(例:月〜金の毎朝 7:30)
# OnCalendar=Mon..Fri 07:30:00
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target