🌞

Linux & NFC & マイナンバーカード & LibreOffice

2024/01/20に公開

Linux でマイナンバーカード(NFC)を使用してLibreOfficeに署名

2024-01-20

※2024-08-26 追記:

  • LibreOffice 24.2, 24.8 でサイン出来ませんでした
  • 署名に使用する証明書選択ダイアログ画像

(1).結論


(2).環境

  • Ubuntu 22.04
  • LibreOffice 7.4
  • IO DATA USB-NFC4

(3).参考サイト

  1. マイナンバーカードでLibreOfficeの文書とPDFに電子署名だけするよ2017
    https://www.nofuture.tv/20171210
  2. LibreOffice Help Applying Digital Signatures
    https://help.libreoffice.org/7.4/en-US/text/shared/guide/digitalsign_send.html
  3. LibreOffice Help PDF Digital Signatures
    https://help.libreoffice.org/7.4/en-US/text/shared/01/ref_pdf_export_digital_signature.html
  4. マイナンバーカードによる認証と署名
    http://eswg.jnsa.org/matsuri/201711/20171101-P1-hamano.pdf
  5. マイナンバーカードと電子署名の本
    https://www.cuspy.org/diary/2021-09-04-myna-book/myna-book.pdf
  6. List of free rfc3161 servers
    https://gist.github.com/Manouchehri/fd754e402d98430243455713efada710?permalink_comment_id=3810141
  7. JPKI 署名用の認証局 Certificate Authorities file
    https://www.jpki.go.jp/ca/ca_rules3.html
  8. JPKI 利用者証明用の認証局 Certificate Authorities file
    https://www.jpki.go.jp/ca/ca_rules4.html

(4).事前準備

参考サイト 7. からJPKIの署名用CAファイル(.cerになっている)をダウンロード。
2023-12時点で3種類存在(signca01.cer,signca02.cer,signca03.cer)。全てget。

Ubuntu 22.04のシステムに認識させる。

for i in *.cer
do
  k=${i/.cer/}
  openssl x509 -inform DER -in $i -out jpki-${k}.crt
done

cp jpki-*.crt /usr/local/share/ca-certificates/

update-ca-certificates

Ubuntu 22.04のopenssl、opensslライブラリをリンクしたソフト(wgetなど)は、これでJPKIを認証局として認めるはず。

参考サイト 8. のJPKI利用者証明用のCAファイルも必要かどうか不明だったため、ついでに入れた。


(5).詳細

(5)-1. LibreOffice文書にサイン

参考サイト 1. がものすごく詳しい。キャプチャーまでついていて。
これがなければ、何もできなかった。ありがとうございます!!!!

注意点は、本当に何のパスフレーズを入れれば良いか迷うこと。私も罠にひっかかった。
よかった、パスワード失敗回数上限になる前に気づいて。

よーくダイアログのメッセージを見ないと、マイナンバーカードの長いパスフレーズか、短い方か間違う。絶対に間違う。断言しよう!間違うと。

入力前に、深呼吸なり、お茶飲むなりして、気持ちを落ちつけよう!

LibreOffice myna short
LibreOffice マイナンバーカード 短い方のPIN

「User Authentication PIN」 => 短い方
「Digital Signature PIN」 => 長い方

署名に使用する証明書選択ダイアログ:
署名に使用する証明書選択
「20....」から始まるものが、マイナンバーの「署名用」のpem
ダブルクリックか[署名]ボタンで署名


(5)-2. LibreOfficeからexportするPDFファイルにTSA

PDFをexportする時、TSA (RFC3161)をつけるには、

まず準備が必要:

  1. LibreOffice 「ツール」⇒ 「オプション...」でオプションウインドウ出現

  2. オプションウインドウ内で、「LibreOffice」 ⇒ 「セキュリティ」

  3. 「時刻認証局」の、[時刻認証局...]ボタンで、TSA server 追加ダイアログ出現。
    LibreOffice Option...
    LibreOffice Option

  4. TSA サーバーを追加
    TSAサーバーは、参考サイト 6. から選ぶ。複数追加可能。
    LibreOffice TSA server
    LibreOffice TSA server追加

実行:
LibreOffice上で、PDFにエクスポートする時のダイアログで、「時刻認証局」を押し、TSAサーバーを選ぶ。
LibreOffice export PDF
LibreOffice PDF TSA


(5)-3. PDF studio viewerでみる

出来上がった署名つきPDFをみる。

Qoppa PDF Studio Viewer ( https://www.qoppa.com/pdfstudioviewer/ )
は、CAファイルをインポートできる。

  1. 「ファイル」⇒「設定」で、設定ウインドウ出現
  2. [信頼できる証明書]選択
  3. [インポート]で、ダウンロードしたJPKIの*.cerファイルを読み込み

これで、JPKIの認証局に対する検証が通る。


(5)-4. RFC3161 TSA serverについて

参考サイト 6. のTSAサーバーの中で、Ubuntu 22.04上のopensslコマンド、Qoppa PDF Studio Viewer がCAを認識したサーバーは次だった。

  • http://eswg.jnsa.org/freetsa
  • https://freetsa.org/tsr
  • http://timestamp.apple.com/ts01
  • http://ts.ssl.com
  • http://timestamp.digicert.com
  • http://tss.accv.es:8318/tsa

最新のmacosや最新のwindows上で、最新のacrobatを使えば、CAを認識するかもしれないのは次。試していない。

  • http://tsa.belgium.be/connect
  • http://dd-at.ria.ee/tsa

参考サイト 6. の中で、

Credible: Yes . [Adobe: European Union Trusted Lists] and [Windows Cert Store].

と記載しているため、何もしなくてもCA認識の可能性がある。

Ubuntu 22.04で認識させようとしたが、CA fileがどこにあるか探しきれず。失敗。
ベルギーのCAファイルを見つけたが、timestampサーバーのCAファイルがテキストではなくPDFファイルに書かれている。かつ、2つのpemのチェーンになっていた。コピペしてみたが、うまくいかなかった。何か手順が違うのだろう。追求できていない。


  • JsignPDF+マイナンバーカードでサインする事については、気が向いたら書くかもしれない。書かないかもしれない。

追記: Libreoffice 24

2024-08-26
Libreoffice 24.8.0 署名失敗。
[署名]ボタン押しても無反応。ダイアログも閉じない。
かんべんしてほしい.........
デバッグログってどうやって出すの?


以上

Discussion