PDFの有効期限を確認する方法:期限チェックの手順とおすすめツール

PDFの有効期限を確認したいなら? まずは「有効期限」って何?

PDF自体に「有効期限」という概念は無いものの、ビジネスで使われる電子文書は
「期限付き」で配布されるケースが増えています。たとえば、契約書のコピーや
取引先への請求書が「○月○日まで閲覧できる」といった制限を設ける場合です。
こうした制限は、PDFにデジタル署名タイムスタンプパスワード保護といった
機能を組み合わせて実現されることが多いです。

この記事では、PDFに設定された期限を確認する手順と、実際にチェックする際に
便利なツールを紹介します。期限を確認できない=リスクが高い!
だから、知っておきたいポイントをしっかり押さえましょう。


期限が設定されているか確認する前に知っておくべき前提

  1. PDF標準(ISO 32000-1/2)には「有効期限」項目はない
    期限情報は、PDF自体のメタデータや、外部のデジタル証明書に埋め込まれています。

  2. 有効期限は主に以下の3つで表現される

    • タイムスタンプ(TS): 文書に署名の際に発行されたタイムスタンプを使用し、後からも有効かどうか確認できる仕組み。
    • 署名の失効日: デジタル証明書に失効日が設定されている場合、それが参照される。
    • パスワード(有効期限付き): 一部の製品はパスワードの有効期限を設定でき、設定期限を過ぎると自動でロックになる。
  3. 確認方法はツールや環境により変わる

    • Adobe Acrobat Reader: デジタル署名の詳細から有効期限を確認。
    • コマンドライン: openssl, jSignPdf, PdfBox などで署名情報を抽出。
    • ブラウザ拡張: Chrome の PDF Viewer でも簡易表示は可能だが、詳細は不十分。

① PDFファイルを開いて確認する手順(Adobe Acrobat Reader)

1. PDFを開き、右上の「署名」アイコンをクリック

署名がない場合は「署名なし」と表示されます。

2. 署名欄を右クリック → 「署名のプロパティ」または「署名の詳細」を選択

3. 「証明書」タブに移動

ここに「有効期限(Expiration Date)」が表示されます。
ただし、証明書が失効していても表示されず「無効」となるケースもあるので注意。

4. タイムスタンプがある場合

「タイムスタンプ」タブで設定日と有効期限を確認できます。

ポイント:Adobe Readerは最も一般的ですが、企業内でバージョンが古い場合や、PDFがパスワードで暗号化されている場合は右クリックメニューが表示されない場合があります。


② コマンドラインでタイムスタンプと証明書情報を抽出

openssl を使って署名情報をチェック

# 署名情報を取得
openssl smime -verify -inform DER -in sample.pdf -noverify -out /dev/null

# 失効日を取得したい場合
openssl x509 -in sample.crt -noout -dates
  • 実行手順
    1. PDFに添付されている署名証明書(CRT)を別途取得。
    2. openssl x509 で証明書の有効期限を確認。

pdfsig (part of poppler-utils) で署名を検証

pdfsig sample.pdf
  • 出力例:
Signature 1:
  Type          : CMS
  Digest algorithm: SHA256
  Signing time   : 2023-10-01T13:45:00
  Signer certificate:
    Not before   : 2023-01-01
    Not after    : 2024-01-01
    ...

これで「Not after」が有効期限です。
poppler-utils は Linux で簡単にインストールできます。

jSignPdf を使う

Java ベースのオープンソースライブラリ。
GUI で確認できるものは jSignPdf Viewer

java -jar jsignpdfviewer.jar sample.pdf
  • GUI から詳細情報(証明書、タイムスタンプ)を閲覧可能。

③ タイムスタンプの内容を直接確認する

PDF内部構造を探索

  1. PDFを開く: Less などでテキストを読むと、/TS というオブジェクトがあるか確認。
    例:

    /Contents 12 0 R
    /SignerInfos <<
      1 0 R
    >>
    
  2. /TS オブジェクト: タイムスタンプに関する情報が格納されている。
    ここに UT(Untrusted Timestamp)や T(Trusted Timestamp)日時情報があります。

タイムスタンプを検証するオンラインサービス

サイト名 URL 特徴
tsa.gandi.net https://tsa.gandi.net 受け取ったタイムスタンプを検証し、有効期限を表示
TimeStamping.org https://trusteastamp.org 入力したファイルの TS 情報を解読し、詳細を表示
digiphor.com https://digiphor.com/ts/ ユーザがアップロードした PDF のタイムスタンプを検証

注意
オンラインサービスは機密情報を送信するリスクがあるため、機密性が高い PDF は自己環境で確認しましょう。


④ パスワード付き PDF の期限情報

パスワード保護は「有効期限」付きでしばしば使われます。
例えば、パスワード付き PDF を「2024-12-31」に自動でロックしたい場合。

期限付きパスワードを設定するツール

ツール OS 使い方
Adobe Acrobat Pro DC Windows/Mac ツール保護パスワードで保護期限付きパスワードを設定
PDFtk Server Windows/Linux/macOS コマンドラインで pdftk input.pdf output output.pdf user_pw password allow AllModsToKeep + encrypt で期限設定。詳細は公式マニュアル
iText 7 Java/C# PdfEncryptorExpireAt を設定(プログラムで自動化)

確認手順

  1. PDFを開いてパスワードを入力。
  2. ファイルメニュー → プロパティセキュリティ タブで「パスワードの有効期限」を確認。
    • 期限を過ぎた場合は「無効なパスワード」とエラー表示になります。

⑤ 環境別の詳細チェックツール一覧

環境 ツール 主な機能 便利ポイント
Windows Adobe Acrobat Pro DC 署名、証明書、パスワード情報確認 GUI で直感的に操作、複数署名対応
macOS Preview(標準) 署名情報の概要表示 シンプルだが詳細は不足
複数プラットフォーム Qustodio PDF Validator PDF/TS/証明書検証 3D PDF も対応
コマンドライン pdfinfo (Poppler) メタデータ、ページ数、暗号化情報 シンプルでスクリプトに組み込みやすい
コマンドライン PdfBox(Java) 署名・タイムスタンプ抽出 自動化スクリプトに最適
コマンドライン OpenSSL 証明書の有効期限抽出 既に導入済みなら追加ツール不要

⑥ よくある問題と解決策

シチュエーション 問題 解決策
タイムスタンプが表示されない タイムスタンプが設定されていない 署名時にタイムスタンプサービスを必ず設定
証明書の有効期限が過ぎている 失効した証明書で署名 失効証明書を使って新しい証明書で再署名
パスワード付き PDF が開けない 期限切れ 期限設定を確認し、必要なら再パスワードを設定
PDF が暗号化されている 署名情報へのアクセス制限 暗号化情報を解読する、または再署名を行う
フォーマットが古いPDF 新しい仕様に非対応 PDFtk 等で旧PDFを更新形式に変換

⑦ 期限チェックのベストプラクティス

  1. 署名時に必ずタイムスタンプを追加

    • タイムスタンプがあると「いつ署名したか」「何時まで有効か」を正確に保証できます。
  2. 証明書リボーク情報を定期的に確認

    • CAs が発行した CRL(Certificate Revocation List)や OCSP(Online Certificate Status Protocol)で失効情報を確認。
  3. 自動化スクリプト

    • 毎月・毎年に期限が近い PDF をリストアップして通知する仕組みを構築しましょう。
    • 例: Python + PyPDF2 + OpenSSL で期限情報を抽出し、メール通知。
  4. 社内ドキュメントポリシー

    • 期限付き PDF を利用する場合、社内共有システムで自動ロックを有効化。
    • 期限が来たら自動で削除/アーカイブするルールを設定。
  5. バックアップ

    • 期限付きファイルは期限後も参照が必要になる場合があるため、バックアップを別箇所に保管。

まとめ

PDF に「有効期限」を設定・確認するためには、

  1. PDF のメタ情報を読む(Adobe Readerなど)
  2. 証明書やタイムスタンプ情報を取得(openssl、pdfsig、jSignPdfなど)
  3. 必要ならパスワードの有効期限を確認(Acrobat Pro など)

という手順を踏むだけで、期限情報を把握できます。
多くの場合、デジタル署名にタイムスタンプを付与しておくだけで十分な管理が可能です。
ただし、パスワード付き PDF なら期限チェックも忘れずに行いましょう。

ポイント

  • 「有効期限」が設定されているかは必ず確認し、
  • 期限切れの証明書・パスワードは再発行または再署名で対処する。

これらを実践すれば、PDF の期限管理リスクを大幅に低減できます。


コメント