OPC UAでセキュリティの証明書を発行してみた

OPC UA

OPC UAのセキュリティの証明書を実際に発行してみました。

セキュリティポリシーの「Basic256Sha256」を使用しています。

サーバー・クライアント間でのセキュリティの設定方法含めて詳しく紹介します。

 

スポンサーリンク

OPC UAでセキュリティの証明書を発行してみた

OPC UAのセキュリティポリシーの「Basic256Sha256」を使ってみました。

サーバー側で証明書を発行した後に、クライアント側と設定することで対応できました。

 

サーバーをラズベリーパイにして、クライアントを(フリーソフトの)UaExpertを使用しました。

PLCのデータをOPC UAのセキュリティ環境下で通信テストができています。

設定方法から実際の動作まで紹介していきます。

 

OPC UAとは

産業システムには数多くの産業ネットワークの規格が有ります。

OPC UAは数多くの規格超えて通信・データ収集・機械制御などが可能になる通信規格です。

(下記図はかなり大雑把なイメージ図です)

 

下記記事で実際にOPC UAを使ってデータを収集しています。(リンク先はこちら)

PythonでIoT!Raspberry Piで産業用のデータ収集してみた

PythonでIoT!Raspberry Piで産業用のデータ収集してみた
PythonでEtherCAT,PROFINETの産業用データを収集してみました。 ラズパイと無料ソフト環境でテストしていますので誰でも実施可能です。 使用したライブラリからプログラムまで一から紹介します。 Pytho...

 

OPC UAのセキュリティポリシーのBasic256Sha256

簡単にOPC UAの接続テストするならばセキュリティ無しの方が楽です。

OPC UAのセキュリティの機能を使おうとすると、何かしら設定が必要になります。

 

ただ、現実的に産業用データの通信にセキュリティは普通使います。

(OPC UAのメリット・特徴であるセキュリティを使わないケースは少ないと思います…)

今回はOPC UAのセキュリティポリシーの「Basic256Sha256」を使って通信テストします。

 

OPC UAの通信テストの環境構築する

今回のOPC UAのテスト環境としては下記です。

OPC UA通信させるには「サーバー」と「クライアント」が必要になります。

  • OPC UAサーバー(PLC) …「ラズベリーパイ」と「ソフトウェアPLC(CODESYS)」
  • OPC UAクライアント   …「普通のPC」と「クライアントソフト(UaExpert)」

 

OPC UAサーバーをフリーで作る

ラズベリーパイさえあれば、テストレベルならば無料(フリー)で対応可能です。

OPC UAサーバーを作る方法に関しては下記記事に記載しています。(リンク先はこちら)

OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた

OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた
OPC-UAでPLCと接続して、クライアント側からデータ取集まで試してみました。無料で対応可能です。 汎用的なラズベリーパイで「OPC UAサーバー」かつ「PLC(シーケンサ)」にする手順を紹介します。 OPC UAでPLC...

 

OPC UAクライアントをフリーで作る

OPC UAクライアントに関しては普通のPCがあれば問題有りません。

下記記事同様にフリーのソフト(UaExpert)を使えば無料で対応可能です。(リンク先はこちら)

OPC UAクライアントのフリーソフトUaExpertを使ってみた

OPC UAクライアントのフリーソフトUaExpertを使ってみた
OPC UAクライアントソフトのUaExpertのダウンロード方法から基本的な使い方まで紹介します。 無料(フリー)で使えて便利なソフトですのでOPC UAを始めてみたい方におすすめな記事となっています。 OPC UAクライ...

 

OPC UAサーバーで証明書を発行する

最初にOPC UAサーバー側(ラズパイ+CODESYS)から証明書を発行します。

CODESYSのソフトを使い、OPC UAサーバーとPLCを立ち上げていきます。

 

ラズベリーパイにCODESYSのインストール方法

最初にラズベリーパイにCODESYSをインストールする必要があります。

CODESYSのダウンロード方法含めて詳細な方法については下記記事をご覧ください。

ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた

ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた
ラズベリーパイをPLC(シーケンサ)として使う実践編で「ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた」を紹介します ラズベリーパイでラダーのプログラムを実際に動かす手順を紹介しています。「自分でPLC(シーケンサ)...

 

CODESYS Security Agent

OPC UAの証明書を発行するにはセキュリティのパッケージのインストールが必要です。

CODESYS Security Agentというパッケージです。

無料でダウンロード・インストールできます。ダウンロード先は下記です。

 https://store.codesys.com/codesys-security-agent.html

 

ラダーの自己保持回路を作る

特にテストプログラムは何でも大丈夫です。筆者はラダーで基本的な自己保持回路を組みました。

 

もし同様な回路を作る方がいれば下記記事をご参考ください。回路図含めて記載しています。

入門編!簡単なPLC・ラダーのプログラムの例を作って動かしてみた
ラズベリーパイをPLC(シーケンサ)として使う実践編で「入門編!簡単なPLC・ラダーのプログラムの例を作って動かしてみた」を紹介します ラズベリーパイでラダーのプログラムを実際に数例動かして紹介しています。「自分でPLC(シー...

 

OPC UAからPLCの入出力にアクセスできるように設定する

CODESYSの中で持っているPLCの入出力データをOPC UAからアクセスできるように設定します。

最初に「Application」を右クリックします。

そして「オブジェクトの追加」⇒「シンボルコンフィグレーション」を選択します。

 

「シンボルコンフィグレーション」の項目のウインドウが出てきます。

「OPC UA機能をサポート」にチェックがあることを確認して進めていきます。

 

これで「シンボルコンフィグレーション」の設定ができるようになりました。

一度「ビルド」してOPC UAでアクセスしたい入出力(変数)を選択します。

 

OPC UAサーバーからセキュリティ証明書を発行する

ビルド後にエラー無くラズベリーパイにログイン出来たら、セキュリティ画面に移ります。

「表示」タブから→「セキュリティ画面」に移動できます。

此処から先の手順に関してはCODESYSのオンラインヘルプページにも記載があります

実施手順が記載されていました。(リンク先はこちらから)

 

セキュリティ画面から「Devices」→「Device」→「OPC UA Server」を選択します。

まだ最初の時点では(not available)になっているはずです。

 

「OPC UA Server」の左上のアイコンをクリックします。

「Certificate Settings」と設定が出てきますが、「OK」を押して進めていきます。

 

ラズベリーパイからOPC UAのセキュリティ証明書を発行するようになりました。

(ここまでの手順を実施したらラズパイを一度再起動した方が良いと思います。)

 

OPC UAクライアントと証明書を設定する

この時点ではまだサーバー側が一方的に証明書を発行しているだけです。

次にOPC UAクライアント(UaExpert)の設定を行います。

 

OPC UAクライアントソフト(UaExpert)のダウンロード方法は下記記事をご参考下さい。

OPC UAクライアントのフリーソフトUaExpertを使ってみた

OPC UAクライアントのフリーソフトUaExpertを使ってみた
OPC UAクライアントソフトのUaExpertのダウンロード方法から基本的な使い方まで紹介します。 無料(フリー)で使えて便利なソフトですのでOPC UAを始めてみたい方におすすめな記事となっています。 OPC UAクライ...

 

OPC UAクライアントからOPC UAサーバーを選択する

UaExpertのツールバーの箇所で「+」をクリックすると接続するOPC UAサーバを選択できます。

今回のテストの場合は「Custom Discovery」の<Double click…>の箇所を選択します。

「opc.tcp://」の後に接続するOPC UAサーバーのIPアドレスを入力すると接続方法が選択できます。

 

OPC UAセキュリティーポリシーの「Basic256Sha256」を選択します。

鍵マークがついたものを選びます。

 

OPC UAサーバーからの証明書を信頼する

Projectの箇所に接続するOPC UAサーバー「OPCUAServer@raspberrypi」が出てきます。

右クリックして「Connect」を選択します。

 

最初にをアクセスしたときにCertificate Validation(証明書の検証)が発生します。

サーバーの証明書(Certificate)を信頼(Trust)します。

 

ただ最初に信頼(Trust)した際には、まだエラーが発生するはずです。

 

実際のエラーのログは下記形でした。

 

OPC UAクライアントからの証明書を信頼する

CODESYS(OPC UAサーバー)側で、OPC UAクライアントからの証明書を信頼(Trust)します。

セキュリティ画面の「Quarantined Certificates」にUaExpertからの証明書があります。

 

信頼する証明書の「Trusted Certificates」にドラッグ&ドロップします。

 

OPC UAクライアント側から再度接続する

その後UaExpertで再度「Connect」すると、OPC UAをセキュリティ環境で通信できました。

セキュリティポリシーの「Basic256Sha256」で対応できています。

その際のログを残しておきます。

 

あとは自由にアドレス空間から必要なデータをドラッグ&ドロップして確認できます。

 

まとめ

今回はOPC UAのセキュリティと証明書に関して紹介させていただきました。

記事をまとめますと下記になります。

OPC UAサーバーから証明書を発行します
OPC UAクライアントと証明書を設定することでセキュリティ通信ができます
OPC UAのセキュリティポリシーの「Basic256Sha256」を使えました

 

OPC UAはラズベリーパイ(raspberry pi)で無料で作れて、通信テストもすることも可能です。

皆様もぜひ試してみてください。

コメント