PDFの有効期限を確認したいなら? まずは「有効期限」って何?
PDF自体に「有効期限」という概念は無いものの、ビジネスで使われる電子文書は
「期限付き」で配布されるケースが増えています。たとえば、契約書のコピーや
取引先への請求書が「○月○日まで閲覧できる」といった制限を設ける場合です。
こうした制限は、PDFにデジタル署名やタイムスタンプ、パスワード保護といった
機能を組み合わせて実現されることが多いです。
この記事では、PDFに設定された期限を確認する手順と、実際にチェックする際に
便利なツールを紹介します。期限を確認できない=リスクが高い!
だから、知っておきたいポイントをしっかり押さえましょう。
期限が設定されているか確認する前に知っておくべき前提
-
PDF標準(ISO 32000-1/2)には「有効期限」項目はない
期限情報は、PDF自体のメタデータや、外部のデジタル証明書に埋め込まれています。 -
有効期限は主に以下の3つで表現される
- タイムスタンプ(TS): 文書に署名の際に発行されたタイムスタンプを使用し、後からも有効かどうか確認できる仕組み。
- 署名の失効日: デジタル証明書に失効日が設定されている場合、それが参照される。
- パスワード(有効期限付き): 一部の製品はパスワードの有効期限を設定でき、設定期限を過ぎると自動でロックになる。
-
確認方法はツールや環境により変わる
- 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
- 実行手順
- PDFに添付されている署名証明書(CRT)を別途取得。
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内部構造を探索
-
PDFを開く:
Lessなどでテキストを読むと、/TSというオブジェクトがあるか確認。
例:/Contents 12 0 R /SignerInfos << 1 0 R >> -
/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# | PdfEncryptor で ExpireAt を設定(プログラムで自動化) |
確認手順
- PDFを開いてパスワードを入力。
- ファイルメニュー →
プロパティ→セキュリティタブで「パスワードの有効期限」を確認。- 期限を過ぎた場合は「無効なパスワード」とエラー表示になります。
⑤ 環境別の詳細チェックツール一覧
| 環境 | ツール | 主な機能 | 便利ポイント |
|---|---|---|---|
| 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を更新形式に変換 |
⑦ 期限チェックのベストプラクティス
-
署名時に必ずタイムスタンプを追加
- タイムスタンプがあると「いつ署名したか」「何時まで有効か」を正確に保証できます。
-
証明書リボーク情報を定期的に確認
- CAs が発行した CRL(Certificate Revocation List)や OCSP(Online Certificate Status Protocol)で失効情報を確認。
-
自動化スクリプト
- 毎月・毎年に期限が近い PDF をリストアップして通知する仕組みを構築しましょう。
- 例:
Python + PyPDF2 + OpenSSLで期限情報を抽出し、メール通知。
-
社内ドキュメントポリシー
- 期限付き PDF を利用する場合、社内共有システムで自動ロックを有効化。
- 期限が来たら自動で削除/アーカイブするルールを設定。
-
バックアップ
- 期限付きファイルは期限後も参照が必要になる場合があるため、バックアップを別箇所に保管。
まとめ
PDF に「有効期限」を設定・確認するためには、
- PDF のメタ情報を読む(Adobe Readerなど)
- 証明書やタイムスタンプ情報を取得(openssl、pdfsig、jSignPdfなど)
- 必要ならパスワードの有効期限を確認(Acrobat Pro など)
という手順を踏むだけで、期限情報を把握できます。
多くの場合、デジタル署名にタイムスタンプを付与しておくだけで十分な管理が可能です。
ただし、パスワード付き PDF なら期限チェックも忘れずに行いましょう。
ポイント
- 「有効期限」が設定されているかは必ず確認し、
- 期限切れの証明書・パスワードは再発行または再署名で対処する。
これらを実践すれば、PDF の期限管理リスクを大幅に低減できます。


コメント