update_cert.py(HTTPS 証明書の自動更新)

update_cert.py は、HTTPS 証明書の有効期限を確認し、 必要に応じて自動で更新するスクリプトです。

本スクリプトは、本サイト管理者と AI(Microsoft Copilot)との共同制作教材として作成されました。 systemd と連携し、毎日自動でチェックを行います。

update-cert.zip をダウンロード

最終更新:

スクリプトの配置方法(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

「次回実行日時」と「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