電子処方箋対応 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インターフェースでプログラムできるようにします。
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。
ダブルクリックすると証明書の詳細が表示されるが、中間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の両方で利用可能な電子カルテです。介護保険にも対応してます。
カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。
| 固定リンク
「カルテメーカー」カテゴリの記事
- マイナ保険証による公費情報の取得について(PMHへの対応)(2024.11.28)
- 医療DX加算改定に伴う設定について(2024.10.01)
- 長期収載品の選定療養導入に伴なう処方入力の変更について(2024.09.29)
- 訪問診療でのオンライン資格確認方法(居宅同意取得型)(2024.06.11)
- カルテメーカーのペーパーレス運用について(2024.04.29)
「開発記録」カテゴリの記事
- 電子処方せん対応 4Dプラグイン開発(その3かな?)(2022.08.12)
- 電子処方せん対応 4Dプラグイン開発(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その1)(2022.08.12)
- 電子処方箋対応 4Dプラグイン開発 pkcs#11、OpenSSL、電子署名、HPKIカード 導入備忘録(2022.08.09)
- 歯式メーカー アップデート(2020.08.15)
「4D」カテゴリの記事
- 電子処方せん 基本的な構成(2022.08.25)
- 電子処方せん対応 4Dプラグイン開発(その3かな?)(2022.08.12)
- 電子処方せん対応 4Dプラグイン開発(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その2)(2022.08.12)
- 電子処方箋対応 4Dプラグイン開発 pkcs#11、OpenSSL、電子署名、HPKIカード 導入備忘録(2022.08.09)
「電子処方せん」カテゴリの記事
- 電子処方せん 基本的な構成(2022.08.25)
- 電子処方せん対応 4Dプラグイン開発(その3かな?)(2022.08.12)
- 電子処方せん対応 4Dプラグイン開発(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その2)(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その1)(2022.08.12)
「電子署名」カテゴリの記事
- カルテメーカーのペーパーレス運用について(2024.04.29)
- 電子処方せん 基本的な構成(2022.08.25)
- 電子処方せん対応 4Dプラグイン開発(その3かな?)(2022.08.12)
- 電子処方せん対応 4Dプラグイン開発(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その2)(2022.08.12)
「HPKIカード」カテゴリの記事
- 電子処方せん 基本的な構成(2022.08.25)
- 電子処方せん対応 4Dプラグイン開発(その3かな?)(2022.08.12)
- 電子処方せん対応 4Dプラグイン開発(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その2)(2022.08.12)
- 忘れないうちにOpenSSLでの暗号化と復号 (その1)(2022.08.12)
コメント