dcmtls: ネットワークライブラリ向けセキュリティ拡張
このモジュールには、Transport Layer Security (TLS) 接続を介してトンネリングする DICOM ネットワーク通信を実装するクラスが含まれます。DICOM の「Security Enhancements One」拡張(旧 Supplement 31)に準拠しています。このモジュールには外部ライブラリの OpenSSL が必要です。
主なインターフェースクラスは次のとおりです。
ファイル
詳しくは次のファイルを参照してください。
例
次の例は、アソシエーション要求側(リクエスタ)アプリケーションで TLS を有効にするコード断片を示します。ネットワーク初期化コードの全体はここでは省略しており、エラーチェックのコードも簡潔さのためにほとんど省いています。
T_ASC_Network *net; // network initialization code not shown,
T_ASC_Parameters *params; // we just assume these pointers to be valid
DcmTLSTransportLayer::initializeOpenSSL(); // initialize OpenSSL library
// create TLS object that initializes the random generator through a file
// "random.dat" containing random data (1 kByte is sufficient).
DcmTLSTransportLayer *tLayer = new DcmTLSTransportLayer(
NET_REQUESTOR, "random.dat");
if (tLayer->setPrivateKeyFile("privkey.pem", SSL_FILETYPE_PEM).bad())
{
cerr << "unable to load private key" << endl;
return;
}
if (tLayer->setCertificateFile("certificate.pem", SSL_FILETYPE_PEM).bad())
{
cerr << "unable to load certificate" << endl;
return;
}
// enable the ciphersuites for the BCP 195 RFC 8996 secure transport profile
tLayer->setTLSProfile(TSP_Profile_BCP_195_RFC_8996);
tLayer->activateCipherSuites();
// accept any certificate from the remote site (not recommended)
tLayer->setCertificateVerification(DCV_ignoreCertificate);
// register and activate TLS layer
ASC_setTransportLayer(net, tLayer, 1);
ASC_setTransportLayerType(params, 1);