« ロジテック製オン資格機能プレインストールPCのセットアップ方法(その2) | トップページ | 忘れないうちにOpenSSLでの暗号化と復号 (その1) »

2022年8月 9日 (火)

電子処方箋対応 4Dプラグイン開発 pkcs#11、OpenSSL、電子署名、HPKIカード 導入備忘録

電子処方箋の電子署名はHPKIカードでおこないます。このための処理は4Dの標準機能では当然できないのでプラグインで機能を実装しなければいけません。

HPKIカードで電子署名をするためには、pkcs#11ライブラリとOpenSSLライブラリが必要です。この記事はこれらをプラグイン開発プロジェクトの下準備のための備忘録です。

pkcs#11
暗号化トークン・インタフェース標準。暗号化トークンにアクセスしてトークン内部の情報やアプリケーションを利用するための標準的なインターフェースを定めた規格。

暗号化トークン
トークンの意味は「印、象徴」。暗号化トークンといった場合は、暗号化のための電子鍵等を搭載したICカードやUSB装置などの物理的な物を指す。現在の一般的なものはICカード。マイナンバーカードが代表例。今回使うのはHPKIカード

OpenSSL
電子的な暗号を扱うための総合的なオープンソースのライブラリ、暗号、PKI(公開鍵基盤)、SSL/TSLなどなど、ほぼあらゆる暗号化関連処理をすることができるライブラリ。現在のバージョンは3であるが、最新バージョンを使ってる例はまだほとんどない、実質的な標準はバージョン1.1

 

とりあえず読むべきもの

まずはなんといってもここ

保健医療福祉分野公開鍵基盤 電子認証局のご案内MeDis

この中のこのページの資料は特に重要、「はじめてのHPKI ~実装の手引き~」は最重要、ダウンロードして10回以上は読むべし

やさしいHPKIMeDis

サンプルコードも必須。開発にも使うので必ずダウンロード。VisualStudioのプロジェクトファイルなのでダウンロードしてプロジェクトファイルをダブルクリックして開きましょう。必読、ここからいろいろとコピペして開発する。

次に本家本元、「JAHIS 保健医療福祉情報システム工業会」ここに標準規格の規格書等があります。こちらのHPKI関連も必読

JAHIS標準・技術文書JAHIS 保健医療福祉情報システム工業会

とりあえず以下の文書は読んでおく

JAHISヘルスケアPKIを利用した医療文書に対する電子署名規格Ver.2.0
JAHIS HPKI対応ICカードガイドラインVer.3.0
JAHIS電子処方箋実装ガイドVer.1.2
JAHIS院外処方箋2次元シンボル記録条件規約Ver.1.7
JAHIS電子版お薬手帳データフォーマット仕様書Ver.2.4

 

準備するもの

VisualStudio

開発環境、HPKIカードドライバの関係でwindowsしか使えないので、これを使う。Mocrosoft Storeから無料でダウンロードできる。Visual Studio Community 2022というのをダウンロード。インストール時にどれをインストールするかって表示されるけど、よくわからなかったのでとりあえずコマンドライン ツールが作成できてC/C++、C#で開発できそうなのを選んだ。まぁ、適当でもなんとかなった。結果オーライ(笑)

 

4D プラグインSDK

4Dのプラグインを開発するのに必須。特にプロジェクトのスケルトンを作る「4D Plugin Wizard」は便利。GitHubはあまり利用していないし、これ自体の開発を手伝うわけじゃないので、zipでダウンロードして展開して使ってます。使い方はdocsフォルダの中のindex.htmlを開くとドキュメントが読める(英語)

4D-Plugin-SDKGitHub

 

medisのサンプルコード

最初に紹介した「やさしいHPKI」ページにあるサンプルコードをダウンロード。.slnファイルをダブルクリックでVisualStudioが起動する。

やさしいHPKIMeDis

 

テスト用HPKIカード、HPKIカードドライバ

テストカードの貸出しMeDis

このページに書いてあるように問い合わせページに書いてあるメールアドレスへカードを貸してくれとメールを送信。ちなみに無料です。

数日で、申し込み用紙がメールで届くので、印刷して郵送する。なんだか事業所の実在を証明するので、会社のパンフレット等を同封してというので、適当にホームページを印刷して送付。HPKIカードドライバも必要なので、送ってもらうように記述

どの資格でのHPKIカードでも発行してもらえます。

注意!!本人限定受取」郵便という特殊な方法で届く。受け取れるのは送付を依頼した個人の自宅限定。免許証などで本人確認ができる住所以外では受け取れない。事業所宛に配送してもらうと受け取れないので注意。最初にハガキが届くので、配送先や受取方法、日付時間等をハガキかwebで郵便局に伝えると配送される。郵便局に受取にいってもいいが、送付先住所と免許証等(写真付きが必須)の身分証明書の住所が一致してないと受け取れない。

医師会薬剤師会の証明局からも入手可能。どちらも有料。

 

ICカードリーダー

マイナンバーカード対応と書いてあれば、基本なんでもいいのですが、とりあえず購入して動作確認ができてるのは、定番中の定番、NTTコミュニケーションズのACR39-NTTComです。ソニーのPaSoRi RC-S380も定番ですね。これもおすすめ。

それにしても高くなったなぁ、どっちも2021年に購入して2800円くらいだったのに、NTTのは3800円、ソニーは5600円、まぁ、安いのもあるけど、ちょっと使うのは...

windowsであれば、USBを繋ぐだけでドライバのインストールとか自動でおこなって認識されます。

 

ドライバー、ライブラリのインストール

HPKIカードドライバーのインストール

ICカードリーダーを接続するとPC/SC(ICカードを利用するための基本的なAPI)を使うことが可能になるドライバーが自動的にインストールされる。

PC/SCのインターフェースを使ってHPKIカードを操作することも原理的には可能であるが、コマンドを16進の機械語みたいな感じで送るとか、あまりにプリミティブで、かつ、利用するための資料が圧倒的に少ないので現実的にこれでプログラムすることは不可能だろう。

そこで、より上位のPKIミドルウェア層のPKCS#11、CryptoAPIなどのPKIドライバ(ライブラリ)を導入して、PKCS#11、CryptoAPI、Cryptography API: Next Generationインターフェースでプログラムできるようにします。

20220809-132913
JAHIS HPKI 対応 IC カードガイドライン Ver.3.0 より

このドライバ、ライブラリはmedis等からHPKIカードと一緒に送られてくる「HPKIカードドライバセット Version 1.50」という円盤に入っています。

円盤の中のドキュメントに従ってインストールします。途中でICカードリーダーの選択画面がでますので、インストール前にカードリーダーをPCに接続しておくといいでしょう。(後でも選択できる)

PKCS#11用のDLLファイルがC:¥Windows¥System32にインストール、CryptoAPIのサービスドライバ(場所不明)、関連するライブラリ、ドライバ(場所不明)がインストールされる。また、ユーティリティソフトで「PIN変更ツール」「証明書表示ツール」「リーダライタ選択ツール」の3つもインストールされる。名前の通りの機能のアプリなので、適宜利用する。

インストールが正しく行われたかは、HPKIカードをリーダーにセットして「証明書表示ツール」を使うといいだろう。アプリケーションが2つ表示され、その中に証明書が表示されればOK。

26

ダブルクリックすると証明書の詳細が表示されるが、中間CA証明書もルートCA証明書もないので信頼されていないと表示されるはずである。

 

OpenSSLのインストール

暗号と電子署名といえば定番OpenSSL

これが無いと何にもできません。ライブラリもそうですがコマンドラインからも使えるようにしておくのが大事。コマンドラインからいろいろ試すことで電子署名について理解が深まる。ちなみにコマンドラインで操作するならMacがおすすめ。OpenSSLの記事のほとんどはLinuxベースなのでWinのコマンドプロンプトでは直接試せない場合が多い。

インストールは「初めてのHPKI」で紹介している以下のサイトがお勧め。コンパイル済みのバイナリで配布されているのを使うので簡単にインストールできる。

windows10でOpenSSLのインストールとアンインストールの方法ONE NOTES

記事では32bitバージョンを選択してるけど、今なら64bit版の「Win64 OpenSSL v1.1.1q」を選択。v3.xは全く別物なので過去の知識が全然使えないのでパス(間違ってインストールしたけどどうにもならなかったw)

インストール先は記事と違ってデフォルトのC:¥Program Files¥OpenSSL-Win64のまま。記事の場所にインストールするとmedisのサンプルコードのプロジェクトのPathを修正しないとビルドできないと思います。DLLファイルの場所は記事を同じ/binにしました。DLLファイルの場所は、システムフォルダの方が良かった気がするけど、/binでも問題なかった。

Pathの設定は、記事とは微妙に違っていて「設定」→「システム」→「詳細情報」→「システムの詳細情報」で「システムのプロパティ」画面が開きます。

追加するパスはインストールした場所なので、今回はC:¥Program Files¥OpenSSL-Win64

 

おまけ、Macの場合

インストールの時に使ったサイトが消えちゃったので、適当に検索してください。大体みんな同じです。ターミナルを開いて

$ brew install openssl

でダウンロード&インストールされます。あっ事前にhomebrewはインストールしておいてくださいね。正しくインストールされると

$ which openssl
/usr/local/opt/openssl@1.1/bin/openssl
$ openssl version
OpenSSL 1.1.1q  5 Jul 2022

となります。うまくいかない時はこちらのサイトが参考になるかなぁ

macOSでopensslコマンド打つとエラーになるQiita homebrewでinstlalしたOpenSSLが反映されず、OSX標準のOpenSSLが使用されてしまう場合の対処方法

 


とりあえず前準備はこのくらいかな。次は実際にプロジェクトのビルドの時の設定とかを解説します。

 


歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

|

« ロジテック製オン資格機能プレインストールPCのセットアップ方法(その2) | トップページ | 忘れないうちにOpenSSLでの暗号化と復号 (その1) »

カルテメーカー」カテゴリの記事

開発記録」カテゴリの記事

4D」カテゴリの記事

電子処方せん」カテゴリの記事

電子署名」カテゴリの記事

HPKIカード」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« ロジテック製オン資格機能プレインストールPCのセットアップ方法(その2) | トップページ | 忘れないうちにOpenSSLでの暗号化と復号 (その1) »