English

実践習得 IBM MQの基本

SSL/TLSの構成(2)

※本連載は最新のmqpgf/mqpcfに基づいて改定されることがあります。 常に最新バージョンをダウンロードしてご使用ください。


作成した証明書要求(CSR)より認証局(CA)にて証明書の発行

各マシンで作成した証明書要求(CSR)より、それぞれのプライベートCAで署名して、証明書を発行します。
OPENSSL_CONF環境変数が、CA用のopenssl.cnfを指していることを確認します。
途中でCA証明書の秘密鍵のパス・フレーズの入力が求められますので、自己署名ルート証明書の作成時に指定したパス・フレーズを入力します。
表示される内容(下記の青字の部分)を確認し間違いがなければ"y"を2回入力します。
※下記はWindowsの例ですが、LinuxやHPE NonStopでも同様です。 ただし、openssl.cnf、CSRファイルの場所、およびCSRファイルの名前の相違に注意してください。

...\openssl\winca>openssl ca -in C:\ProgramData\IBM\MQ\qmgrs\PL92W\ssl\key.csr Using configuration from ...\openssl\winca\openssl.cnf Enter pass phrase for .../openssl/winca/private/cakey.pem: winca Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Aug 4 06:43:52 2021 GMT Not After : Aug 2 06:43:52 2031 GMT Subject: countryName = JP stateOrProvinceName = Chiba organizationName = Pulsar Integration PL92WA Inc. commonName = www.pulsarintegration.PL92W.com X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 14:F6:86:73:F7:4A:61:AF:D5:1F:6F:F4:C1:04:02:63:68:8F:F2:2F X509v3 Authority Key Identifier: keyid:23:0B:5D:88:01:02:F5:6E:2B:F7:67:3D:67:A3:EF:AB:72:8D:43:A2 Certificate is to be certified until Aug 2 06:43:52 2031 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: C=JP, ST=Chiba, O=Pulsar Integration Inc., CN=www.pulsarintegration.com/ emailAddress=support@pulsarintegration.com Validity Not Before: Aug 4 06:43:52 2021 GMT Not After : Aug 2 06:43:52 2031 GMT Subject: C=JP, ST=Chiba, O=Pulsar Integration PL92WA Inc., CN=www.pulsarintegration.PL92W.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:db:6b:22:f5:ce:9c:1b:60:04:63:c8:2c:67:3d: .... Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 14:F6:86:73:F7:4A:61:AF:D5:1F:6F:F4:C1:04:02:63:68:8F:F2:2F X509v3 Authority Key Identifier: keyid:23:0B:5D:88:01:02:F5:6E:2B:F7:67:3D:67:A3:EF:AB:72:8D:43:A2 Signature Algorithm: sha256WithRSAEncryption 8b:2d:d0:e9:18:03:8f:e4:ba:66:32:0a:9c:52:e8:5d:87:2a: .... -----BEGIN CERTIFICATE----- MIID+DCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBkTELMAkGA1UEBhMCSlAx .... -----END CERTIFICATE----- Data Base Updated

*オプションの説明
ca: CAの基本的な機能、X.509証明書や証明書失効リストの発行を行う。
-in <filename>: 証明書要求(CSR)ファイルを指定。

この例ではwinca\newcertsディレクトリに証明書のシリアル番号のPEMファイルが作成されます。

dir ...\winca\newcerts .... 2021/08/04 15:44 4,721 01.pem ....

index.txtファイルに発行した証明書の情報が追加され、serialファイル内のシリアル番号がインクリメントされていることを確認します。

...\openssl\winca>type index.txt V 310802064352Z 01 unknown /C=JP/ST=Chiba/O=Pulsar Integration PL92WA Inc. /CN=www.pulsarintegration.PL92W.com ...\openssl\winca>type serial 02


証明書の検証

証明書の検証で有用なコマンド・ラインをいくつかご紹介します。


証明書・鍵ファイルの形式について

本稿では証明書/鍵ファイルの形式としてPEM(Base64 ascii)形式を前提としています。 外部CAを使用する場合で、実際のCA局からDER(binary)形式で証明書を受領した場合は、下記コマンドでPEM形式へ変換することができます。

openssl x509 -in 01.cer -inform der -out 01.pem -outform pem
openssl x509 -in cacert.cer -inform der -out cacert.pem -outform pem

*オプションの説明
x509: X.509証明書の作成、確認、その他さまざまな操作を行います。
-in <filename>: 読み込むファイル名。
-inform der: 入力データはDER形式。
-out <filename>: データの出力先のファイル名。
-outform pem: 出力データはPEM形式


秘密鍵、公開鍵の対称性チェック

秘密鍵ファイルには秘密鍵、SR、サーバ証明書には公開鍵が含まれています。 これらのファイルに対してopensslコマンドの -modulus を指定した時に出力される値を比較することで秘密鍵、公開鍵の対称性を確認することができます。 各ファイルのhash値を比較し、全て同一であることを確認します。 GSKit(Windows/Linux)の場合は、上記のPEM形式の秘密鍵ファイルは作成されません。
※以下、はHPE NonStop OSS(Linux同等)環境での実施例ですが、Windows,Linuxの場合も同様です。 各プラットフォームで該当ファイルの場所、ファイル名が異なりますので、適切に指定してください。

※秘密鍵ファイル(HPE NonStopの場合のみ) $ openssl rsa -in PL81Nkey.pem -modulus -noout | openssl md5 Enter pass phrase for PL81Nkey.pem: PL81Npass (stdin)= f23c301e7005e4fd0f48b221e66b09dd ※CA署名証明書(サーバー証明書) $ openssl x509 -in 01.pem -modulus -noout | openssl md5 (stdin)= f23c301e7005e4fd0f48b221e66b09dd ※証明書要求(CSR)(GSKitで作成した場合(Windows/Linux)はデフォルトのファイル名は key.csr) $ openssl req -in PL81Nreq.pem -modulus -noout | openssl md5 (stdin)= f23c301e7005e4fd0f48b221e66b09dd

*オプションの説明
rsa: RSA秘密鍵の操作やその中身の確認を行う。
x509: X.509証明書の作成、確認、その他さまざまな操作を行う。
req: このコマンドを使用して、証明書要求の作成、確認、操作を行う。
-in <filename>: 読み込むファイル名。
-modulus: 公開鍵の法(モジュロ)を出力。
-noout: 証明書の符号化された形式での出力を抑制する。
md5: md5を使用してメッセージダイジェスト(ハッシュ値)を生成。


CA署名証明書とCA証明書のsubjectおよびissuerチェック

CA署名証明書(サーバー証明書)とCA(root)証明書の内容チェック(subjectおよびissuer)。 issuer は証明書の発行者で、両方共同じCAのDistinguished Nameになります。

※CA署名証明書(サーバー証明書) $ openssl x509 -subject -issuer -noout -in 01.pem subject=C = AU, ST = Sydney, O = Pulsar Integration PL81NA Inc., CN = www.sd.pulsarintegration.PL81N.com issuer=C = AU, ST = Sydney, O = Pulsar Integration SD Inc., CN = www.sd.pulsarintegration.com, emailAddress = support@sd.pulsarintegration.com ※CA(root)証明書 $ openssl x509 -subject -issuer -noout -in cacert.pem subject=C = AU, ST = Sydney, O = Pulsar Integration SD Inc., CN = www.sd.pulsarintegration.com, emailAddress = support@sd.pulsarintegration.com issuer=C = AU, ST = Sydney, O = Pulsar Integration SD Inc., CN = www.sd.pulsarintegration.com, emailAddress = support@sd.pulsarintegration.com

*オプションの説明
x509: X.509証明書の作成、確認、その他さまざまな操作を行う。
-subject: 証明書の所有者名を出力する。
-issuer: 証明書の発行者を出力する。
-in <filename>: 読み込むファイル名。
-noout: 証明書の符号化された形式での出力を抑制する。


中間CA証明書またはルート証明書とサーバ証明書のベリファイ

X.509証明書の有効性を検証します。 証明書に対する包括的なチェックを行い、証明書チェーンの各証明書に対する検証も行います。

.../openssl/nsca: openssl verify -CAfile cacert.pem newcerts/01.pem newcerts/01.pem: OK ※OKと表示されること

*オプションの説明
verify: X.509証明書の有効性の検証行う。 証明書チェーンの各証明書に対する検証を含む、証明書に対しての包括的なチェックが行われる。
-CAfile <filename1>: 信頼されている証明書ファイルの名前を指定する。
<filename2>: 検証するCA署名証明書のファイル名を指定する。


サーバー証明書の内容確認

有効期限その他、サーバー証明書の内容が想定通りかを確認する。

openssl x509 -noout -text -in 01.pem

*オプションの説明
x509: X.509証明書の作成、確認、その他さまざまな操作を行う。
-noout: 証明書の符号化された形式での出力を抑制する。
-text: 証明書を可読性のある形式で表示する。
-in <filename>: 読み込むファイル名。


CA(root)証明書を鍵リポジトリーに追加する(GSKit)

Windows, Linuxの場合は、鍵リポジトリに証明書を格納する必要があります。 この例では中間証明書はありませんが、root証明書から始まる証明書チェーンの順番に全ての証明書を格納する必要がありますのでご注意ください。

リポジトリの配置場所へ移動し、root証明書をリポジトリの配置場所にコピーします。
※root証明書は任意の場所でも構いません。

※Windowsの場合 >cd C:\ProgramData\IBM\MQ\qmgrs\PL92W\ssl >copy .../openssl/winca/cacert.pem cacert_win.pem ※Linuxの場合 $ cd /var/mqm/qmgrs/PL91L/ssl $ cp -p ..../openssl/lnxca/cacert.pem cacert_lnx.pem

runmqckmコマンドを使用してキー・リポジトリに証明書を追加します。
CA(root)証明書と個人証明書のラベル名はそれぞれ固有のものである必要があります。
※下記は Windows の例ですが Linux も同様です。

...\ssl>runmqckm -cert -add -db key.kdb -pw PL92Wpass -label PLWCA -file cacert_win.pem -format ascii 5724-H72 (C) Copyright IBM Corp. 1994, 2020. >

*オプションの説明
-cert: コマンドの対象は証明書
-add: CA証明書を追加
-db filename: CMS 鍵データベースの完全修飾ファイル名を指定。
-pw password: CMS 鍵データベースのパスワードを指定。
-label labelname: 証明書に付加するラベル名。
-file filename: 証明書ファイルの名前。
-format ascii: 証明書の形式。 Base64 エンコードの ASCII を指定。

送受信する双方のチャネルで使用する証明書が異なるCAで署名されている場合、それぞれの鍵リポジトリーに両方のCA証明書が含まれている必要があります。
今回の例ではWindows, Linux, HPE NonStopでそれぞれ異なるCAを作成しましたので、接続先として予定しているマシン上で作成したCA証明書をftp等で取得し、上と同様の手順で鍵リポジトリーに追加します。
ここでは接続予定のHPE NonStop上のCA証明書を追加しています。
※PEM形式のCA証明書の場合はASCII形式ですので、FTPの転送モードはAsciiで転送することもできますが、バイナリモードでも構いません。

...\ssl>runmqckm -cert -add -db key.kdb -pw PL92Wpass -label PLNCA -file cacert_ns.pem -format ascii 5724-H72 (C) Copyright IBM Corp. 1994, 2020. >

鍵リポジトリー上の追加した証明書を確認します。
まず、格納されている証明書を一覧表示します。

...\ssl>runmqckm -cert -list -db key.kdb -pw PL92Wpass 5724-H72 (C) Copyright IBM Corp. 1994, 2020. Certificates in database C:\ProgramData\IBM\MQ\qmgrs\PL92W\ssl\key.kdb: PLNCA PLWCA >

*オプションの説明
-cert: コマンドの対象は証明書
-list: 鍵データベース内の証明書をリスト
-db filename: CMS 鍵データベースの完全修飾ファイル名を指定。
-pw password: CMS 鍵データベースのパスワードを指定。

次に、格納されている各証明書の詳細をそれぞれ表示させます。

...\ssl>runmqckm -cert -details -label PLWCA -db key.kdb -pw PL92Wpass 5724-H72 (C) Copyright IBM Corp. 1994, 2020. Label: PLWCA Key Size(E): 2048 Version(V): X509 V3 Serial Number: 78 8C A6 A9 32 69 37 D5 AA D6 74 40 A1 29 B4 2F CE 2D 99 36 Issued by: EMAILADDRESS=support@pulsarintegration.com, CN=www.pulsarintegration.com, O=Pulsar Integration Inc., ST=Chiba, C=JP Subject: EMAILADDRESS=support@pulsarintegration.com, CN=www.pulsarintegration.com, O=Pulsar Integration Inc., ST=Chiba, C=JP Valid: From: Friday, July 16, 2021 1:14:26 PM JST To: Monday, July 14, 2031 1:14:26 PM JST Fingerprint: SHA1: D5:AC:62:6E:2C:AB:CA:62:98:B9:23:96:3C:AA:21:C0:9C:87:9A:80 SHA256: C4:48:E1:C0:4C:43:C3:F9:05:2A:DD:A7:D2:BC:0B:9A:F0:A4:3A:88:22:8A:32:99:DB:02:CB: 6D:F8:E6:29:83 HPKP: hZlIRTwboAC7MN6xcWY6yikcW8eB2JH/q2OW1MClDZs= Extentions: - AuthorityKeyIdentifier: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 23 0b 5d 88 01 02 f5 6e 2b f7 67 3d 67 a3 ef ab .......n..g.g... 0010: 72 8d 43 a2 r.C. ] ] - SubjectKeyIdentifier: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 23 0b 5d 88 01 02 f5 6e 2b f7 67 3d 67 a3 ef ab .......n..g.g... 0010: 72 8d 43 a2 r.C. ] ] - BasicConstraints: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] Signature Algorithm(S): SHA256withRSA (1.2.840.113549.1.1.11) Trust Status: enabled >

*オプションの説明
-cert: コマンドの対象は証明書
-details: 特定の証明書の詳細を表示
-label labelname: 証明書のラベル名。
-db filename: CMS 鍵データベースの完全修飾ファイル名を指定。
-pw password: CMS 鍵データベースのパスワードを指定。

...\ssl>runmqckm -cert -details -label PLNCA -db key.kdb -pw PL92Wpass 5724-H72 (C) Copyright IBM Corp. 1994, 2020. Label: PLNCA Key Size(E): 2048 Version(V): X509 V3 Serial Number: 4B C2 81 70 AA 2F B4 81 07 42 45 61 CE 70 68 57 FF 58 0E F5 Issued by: EMAILADDRESS=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com, O=Pulsar Integration SD Inc., ST=Sydney, C=AU Subject: EMAILADDRESS=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com, O=Pulsar Integration SD Inc., ST=Sydney, C=AU Valid: From: Friday, July 16, 2021 5:12:20 PM JST To: Monday, July 14, 2031 5:12:20 PM JST Fingerprint: SHA1: AF:AA:6D:B8:41:2D:56:9D:B0:B7:35:08:4C:A7:2D:8E:62:D7:0C:1E SHA256: 80:50:3B:A9:21:88:0C:E9:BE:A9:9F:C5:A7:D9:8E:5F:67:0C:4E:A1:CC:4C:97:09:FD:C8:65: 45:BC:EF:8B:44 HPKP: dyYgV54de+jSLni8STO+6MTnWBrHloammUlzTWXUICY= Extensions: - AuthorityKeyIdentifier: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: d4 b7 9b 1a 4a 4c f1 a0 3c 3d f0 94 2d 7c 9f ca ....JL.......... 0010: 40 1d 1a eb .... ] ] - SubjectKeyIdentifier: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: d4 b7 9b 1a 4a 4c f1 a0 3c 3d f0 94 2d 7c 9f ca ....JL.......... 0010: 40 1d 1a eb .... ] ] - BasicConstraints: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] Signature Algorithm(S): SHA256withRSA (1.2.840.113549.1.1.11) Trust Status: enabled >


個人証明書を鍵リポジトリーに受信する(GSKit)

キュー・マネージャーごとにCA署名証明書(個人証明書)を鍵リポジトリーに追加します。 これは、Windows, Linuxの場合に行う作業です。 個人証明書のインポートは、必ずCSRを作成したキーリポジトリーであることが必要です。

CAで署名した個人証明書(CA署名証明書)をリポジトリの配置場所にコピーします。
※CA署名証明書は任意の場所でも構いません。

>※Windowsの場合 >cd C:\ProgramData\IBM\MQ\qmgrs\PL92W\ssl >copy .../openssl/winca/newcerts/01.pem PL92WA.pem ※Linuxの場合 $ cd /var/mqm/qmgrs/PL91L/ssl $ cp -p ..../openssl/lnxca/newcerts/01.pem PL91LA.pem

runmqckmコマンドを使用して個人証明書を追加します。
※下記は Windows の例ですが Linux も同様です。

...\ssl>runmqckm -cert -receive -file PL92WA.pem -db key.kdb -pw PL92Wpass -format ascii 5724-H72 (C) Copyright IBM Corp. 1994, 2020. Validation successful. >

*オプションの説明
-cert: コマンドの対象は証明書
-receive: 証明書を受信
-file filename: 証明書ファイルの名前。
-db filename: CMS 鍵データベースの完全修飾ファイル名を指定。
-pw password: CMS 鍵データベースのパスワードを指定。
-format ascii: 証明書の形式。Base64 エンコードの ASCII を指定。

鍵リポジトリー上で追加したCA署名証明書を確認します。
格納されている証明書を一覧にCSR作成時に指定した個人証明書(CA署名証明書)のラベル名が表示されるようになります。

...\ssl>runmqckm -cert -list -db key.kdb -pw PL92Wpass 5724-H72 (C) Copyright IBM Corp. 1994, 2020. Certificates in database C:\ProgramData\IBM\MQ\qmgrs\PL92W\ssl\key.kdb 内の証明書: PL92WA PLNCA PLWCA >

個人証明書(CA署名証明書)の内容も確認します。

...\ssl>runmqckm -cert -details -label PL92WA -db key.kdb -pw PL92Wpass 5724-H72 (C) Copyright IBM Corp. 1994, 2020. Label: PL92WA Key Size(E): 2048 Version(V): X509 V3 Serial Number: 01 Issued by: EMAILADDRESS=support@pulsarintegration.com, CN=www.pulsarintegration.com, O=Pulsar Integration Inc., ST=Chiba, C=JP Subject: CN=www.pulsarintegration.PL92W.com, O=Pulsar Integration PL92WA Inc., ST=Chiba, C=JP Valid: From: Wednesday, August 4, 2021 3:43:52 PM JST To: Saturday, August 2, 2031 3:43:52 PM JST Fingerprint: SHA1: 92:86:14:20:45:E3:99:E6:3C:DC:0C:38:25:FF:73:94:2E:74:E1:10 SHA256: CB:22:A5:A0:08:39:A0:A3:91:1E:C0:F7:CF:BC:61:A4:6C:EB:18:3F:30:05:CA:AD:A9:6C:C6: 27:2B:C2:90:0A HPKP: 4O3ZNADha0Lu4/lDO/8fm7q8uuVUWj9k1sOllWDB4ew= Extentions: - AuthorityKeyIdentifier: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 23 0b 5d 88 01 02 f5 6e 2b f7 67 3d 67 a3 ef ab .......n..g.g... 0010: 72 8d 43 a2 r.C. ] ] - SubjectKeyIdentifier: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 14 f6 86 73 f7 4a 61 af d5 1f 6f f4 c1 04 02 63 ...s.Ja...o....c 0010: 68 8f f2 2f h... ] ] - BasicConstraints: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:false PathLen: undefined ] Signature Algorithm(S): SHA256withRSA (1.2.840.113549.1.1.11) Trust Status: enabled >


SSL/TLS関連ファイルの作成と配置(Openssl)

HPE NosStopの場合は、GSKitの様な鍵リポジトリーを持ちません。 所定の手順で作成した関連ファイルをキューマネージャーのSSLKEYRアトリビュートで指定されている場所に配置します。


CAで署名したサーバー証明書と鍵ファイルを連結

下記要領で、CAで署名したサーバー証明書と鍵ファイルを一つのファイルに結合します。
HPE NonStopのCERTLABLに指定するラベル名は、サーバー証明書の拡張子を除いた部分になります。 下記の例では PL81NA をCERTLABLに指定します。

$ pwd .../openssl/nsca/PL81N $ cp -p ../newcerts/01.pem . $ cat 01.pem PL81Nkey.pem > PL81NA.pem

念のため結合したファイルの検証も行います。

$ openssl x509 -subject -issuer -noout -in PL81NA.pem subject=C = AU, ST = Sydney, O = Pulsar Integration PL81NA Inc., CN = www.sd.pulsarintegration.PL81N.com issuer=C = AU, ST = Sydney, O = Pulsar Integration SD Inc., CN = www.sd.pulsarintegration.com, emailAddress = support@sd.pulsarintegration.com

*オプションの説明
x509: X.509証明書の作成、確認、その他さまざまな操作を行う。
-subject: 証明書の所有者名を出力する。
-issuer: 証明書の発行者を出力する。
-in <filename>: 読み込むファイル名。
-noout: 証明書の符号化された形式での出力を抑制する。

$ openssl verify -CAfile ../cacert.pem PL81NA.pem PL81NA.pem: OK

*オプションの説明
verify: X.509証明書の有効性の検証行う。 証明書チェーンの各証明書に対する検証を含む、証明書に対しての包括的なチェックが行われる。
-CAfile <filename1>: 信頼されている証明書ファイルの名前を指定する。
<filename2>: 検証するCA署名証明書のファイル名を指定する。


SSL/TLS通信で使用する全てのCA証明書を結合

root証明書、中間証明書、送受信する双方のチャネルで使用する証明書が異なるCAで署名されている場合、それら全てのCA証明書を結合します。
Windows、Linuxマシン上のCA証明書を転送し、それらとHPE NonStop上のCA証明書を結合します。

$ pwd .../openssl/nsca/PL81N $ cp -p ../cacert.pem cacert_ns.pem $ ls -l cacert*.pem ... 1468 Aug 10 11:48 cacert_lnx.pem ... 1476 Jul 16 17:12 cacert_ns.pem ... 1456 Aug 10 11:41 cacert_win.pem $ cat cacert_ns.pem cacert_win.pem cacert_lnx.pem > trust.pem $ ls -l trust.pem ... 4400 Aug 10 11:49 trust.pem


パス・フレーズ格納ファイルの作成

MQ for HPE NonStop提供の amqrsslc コマンドを使用して、パス・フレーズ格納(stash)ファイルを作成します。 PL81NA.pemという証明書ストアの秘密鍵のパス・フレーズ格納ファイルを作成するには下記の様にします。 途中でパス・フレーズの入力を求められますので、証明書要求(CSR)を作成時に指定したパス・フレーズを入力します。 または、echo でコマンド・ラインに渡します。
※"-s"のパラメーターに拡張子".pem"は指定しないでください。

$ amqrsslc -s PL81NA Enter password for Keystore PL81NA : PL81Npass Stashed the password in file PL81NA.sth または $ echo PL81Npass | amqrsslc -s PL81NA Stashed the password in file PL81NA.sth $ ls -l *.sth .... 128 Aug 10 13:30 PL81NA.sth

*オプションの説明
-s : キー・ストアのパス


作成したファイルのSSLKeyリポジトリへの配置

キー・リポジトリの場所はキューマネージャーの SSLKEYR プロパティを確認します。
注意点として CERTLABL を使用する場合でも、受信側のMCA(amqrmppa)は初期化時にTLSではない(CERTLABL/SNIを使用できない)SSLチャネルの為にデフォルトでcert.pem/Stash.sthもしくは、キューマネージャー・アトリビュートの CERTLABL に指定されたサーバー証明書を読み込みます。 その為、cert.pem/Stash.sth の名前でもファイルを配置しておく必要があります。 CERTLABLを使用する場合でも、受信チャネル側に cert.pem/Stash.sth が配置されていない場合、受信側チャネルは起動に失敗します。
ここでは、cert.pem/Stash.sth は PL81NA.pem/PL81NA.sth のコピーを使用しています。

$ mqpcf qmgr -qm PL81N SSLKEYR 1: QMNAME(PL81N) SSLKEYR(.../var/mqm/qmgrs/PL81N/ssl)

*オプションの説明
qmgr: キューマネージャー・プロパティの表示
SSLKEYR : SSLKEYRプロパティと必須プロパティのみを表示

$ cp -p PL81NA.pem <MQ Install Directory>/var/mqm/qmgrs/PL81N/ssl/ cp -p PL81NA.sth <MQ Install Directory>/var/mqm/qmgrs/PL81N/ssl/ cp -p trust.pem <MQ Install Directory>/var/mqm/qmgrs/PL81N/ssl/ cp -p PL81NA.pem <MQ Install Directory>/var/mqm/qmgrs/PL81N/ssl/cert.pem cp -p PL81NA.sth <MQ Install Directory>/var/mqm/qmgrs/PL81N/ssl/Stash.sth ※ファイル ・パーミッションをチェックし、MQMグループにR/Wの権限があることを確認します。 cd <MQ Install Directory>/var/mqm/qmgrs/PL81N/ssl/ $ chmod 666 * <MQ Install Directory>//var/mqm/qmgrs/PL81N/ssl: ls -l total 35 -rw-rw-rw- 1 MQM.MANAGER MQM 6526 Aug 10 11:10 PL81NA.pem -rw-rw-rw- 1 MQM.MANAGER MQM 128 Aug 10 13:30 PL81NA.sth -rw-rw-rw- 1 MQM.MANAGER MQM 128 Aug 10 13:30 Stash.sth -rw-rw-rw- 1 MQM.MANAGER MQM 6526 Aug 10 11:10 cert.pem -rw-rw-rw- 1 MQM.MANAGER MQM 4400 Aug 10 11:49 trust.pem

fig 10.2


TLSによるキューマネージャー間の接続の確認

CERTLABL/SNIを使用することを前提としていますので、「TLS」のCipherSpecを指定することが必要です。 例として、TLS_RSA_WITH_AES_256_CBC_SHA256 を使用します。 TLSチャネルの定義は CipherSpecをチャネル・プロパティのsslciphに、証明書ラベルを certlabl に指定(必要な場合)するだけです。 CipherSpecは送受信チャネルで同じものを指定します。 また、HPE NonStop(Openssl)で cert.pem/Stash.sth の名前でもファイルが必要だったことと同じ理由で、Windows/Linux(GSKit)のキューマネージャー・プロパティのCERTLABLに指定されているラベル"ibmwebspheremq<qmgr name>"がデフォルトのラベルとして参照されます。 その為、チャネルのCERTLABLに指定するラベルと同じものに変更しておきます。 これを行わないと、HPE NonStop(Openssl)と同様、受信側のチャネルでエラーが発生し、TLS接続に失敗します。 CERTLABLやCipherSpecなど、チャネルのプロパティを変更した場合は、チャネルを再起動します。 SSL/TLSの証明書ファイルやKeyリポジトリを変更した場合は、"refresh security type(ssl)"を実施するか、キューマネージャーの再起動が必要です。


TLS接続定義の作成

下記はWindowsとHPE NonStop間、HPE NonStopとLinux間のそれぞれのマシンでのTLS接続定義のサンプルです。 (WindowsとLinux間で接続する場合も同様です。)

※ Windows <-> HPE NonStop [ Windows ] <キューマネージャーのCERTLABLの変更> >mqpcf mqsc -qm PL92W -s "dis qmgr CERTLABL" 1: AMQ8408I: QMNAME(PL92W) CERTLABL(ibmwebspheremqpl92w) >mqpcf mqsc -qm PL92W -s "alter qmgr certlabl(PL92WA)" alter qmgr certlabl(PL92WA) 3 : alter qmgr certlabl(PL92WA) 1: AMQ8005I: >mqpcf mqsc -qm PL92W -s "dis qmgr CERTLABL" 1: AMQ8408I: QMNAME(PL92W) CERTLABL(PL92WA) >mqpcf mqsc -qm PL92W -s "refresh security type(ssl)" 1: AMQ8560I: <送信側(SDR)チャネル> >mqpcf mqsc -qm PL92W -s "def ql(PL81N) usage(xmitq)" >mqpcf mqsc -qm PL92W -s "def chl(PL92W.PL81N) chltype(sdr) conname('<hostname or ipaddr> (<port>)') xmitq(PL81N) certlabl(PL92WA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" >mqpcf sta -qm PL92W -c PL92W.PL81N <受信側(RCVR)チャネル> >mqpcf mqsc -qm PL92W -s "def listener(listener) trptype(tcp) port(<port>) control(qmgr)" >mqpcf stalsn -qm PL92W -ln LISTENER >mqpcf lsst -qm PL92W -ln LISTENER >mqpcf mqsc -qm PL92W -s "def chl(PL81N.PL92W) chltype(rcvr) certlabl(PL92WA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" [ HPE NonStop ] <送信側(SDR)チャネル> $ mqpcf mqsc -qm PL81N -s "refresh security type(ssl)" $ mqpcf mqsc -qm PL81N -s "def ql(PL92W) usage(xmitq)" $ mqpcf mqsc -qm PL81N -s "def chl(PL81N.PL92W) chltype(sdr) conname('<hostname or ipaddr> (<port>)') xmitq(PL92W) certlabl(PL81NA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" $ mqpcf sta -qm PL81N -c PL81N.PL92W <受信側(RCVR)チャネル> $ mqpcf mqsc -qm PL81N -s "def listener(listener) trptype(tcp) port(<port>) control(qmgr)" $ mqpcf stalsn -qm PL81N -ln LISTENER $ mqpcf lsst -qm PL81N -ln LISTENER $ mqpcf mqsc -qm PL81N -s "def chl(PL92W.PL81N) chltype(rcvr) certlabl(PL81NA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" ※ HPE NonStop <-> Linux [ HPE NonStop ] <送信側(SDR)チャネル> $ mqpcf mqsc -qm PL81N -s "def ql(PL91L) usage(xmitq)" $ mqpcf mqsc -qm PL81N -s "def chl(PL81N.PL91L) chltype(sdr) conname('<hostname or ipaddr> (<port>)') locladdr('<hostname or ipaddr>/<tcpip process>) xmitq(PL91L) certlabl(PL81NA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" $ mqpcf sta -qm PL81N -c PL81N.PL91L $ mqpcf chs -qm PL81N -c PL81N.PL91L <受信側(RCVR)チャネル> $ mqpcf mqsc -qm PL81N -s "def listener(listener2) trptype(tcp) port(<port>) ipaddr('<hostname or ipaddr>/\$<tcpip process>') control(qmgr)" $ mqpcf stalsn -qm PL81N -ln LISTENER2 $ mqpcf lsst -qm PL81N -ln LISTENER2 $ mqpcf mqsc -qm PL81N -s "def chl(PL91L.PL81N) chltype(rcvr) certlabl(PL81NA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" [ Linux ] <キューマネージャーのCERTLABLの変更> $ mqpcf mqsc -qm PL91L -s "dis qmgr CERTLABL" 1: AMQ8408I: Display Queue Manager details. QMNAME(PL91L) CERTLABL(ibmwebspheremqpl91l) $ mqpcf mqsc -qm PL91L -s "alter qmgr certlabl(PL91LA)" $ mqpcf mqsc -qm PL91L -s "refresh security type(ssl)" <送信側(SDR)チャネル> $ mqpcf mqsc -qm PL91L -s "def ql(PL81N) usage(xmitq)" $ mqpcf mqsc -qm PL91L -s "def chl(PL91L.PL81N) chltype(sdr) conname('<hostname or ipaddr> (<port>)') xmitq(PL81N) certlabl(PL91LA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)" $ mqpcf sta -qm PL91L -c PL91L.PL81N $ mqpcf chs -qm PL91L -c PL91L.PL81N <受信側(RCVR)チャネル> $ mqpcf mqsc -qm PL91L -s "def listener(listener) trptype(tcp) port(<port>) control(qmgr)" $ mqpcf stalsn -qm PL91L -ln LISTENER $ mqpcf lsst -qm PL91L -ln LISTENER $ mqpcf mqsc -qm PL91L -s "def chl(PL81N.PL91L) chltype(rcvr) certlabl(PL91LA) sslciph(TLS_RSA_WITH_AES_256_CBC_SHA256)"


TLS接続結果の確認

接続結果の確認はチャネル・ステータスのプロパティでチェックします。 下記は代表的なプロパティの説明です。 SSLPEERに接続相手の識別名(DN)が表示されます。

SECPROT 現在使用中のセキュリティー・プロトコルで、SSLCIPH に設定した値に基づいて設定されます。 設定される値は次の通りです。
NONE セキュリティー・プロトコルなし
SSLV3 SSL バージョン 3.0
TLSV1 TLS バージョン 1.0
TLSV12 TLS バージョン 1.2
SSLCERTI リモート証明書発行者(CA)の完全識別名です。
SSLPEER ピア・キュー・マネージャーまたはもう一方のチャネルのクライアントの識別名です。 これにはリモート・パートナーの証明書のシリアル番号(SERIALNUMBER 属性)も含まれています。

※ Windows -> HPE NonStop [ Windows ] >mqpcf chs -qm PL92W -c PL92W.PL81N SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL92W.PL81N) CHLTYPE(SDR) CONNAME(xxx.xxx.xxx.xxx(xxxx)) CHLINSTYPE(CURRENT) RQMNAME(PL81N) SECPROT(TLSV12) SSLCERTI(E=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com,O=Pulsar Integration SD Inc.,ST=Sydney,C=AU) SSLPEER(SERIALNUMBER=01,CN=www.sd.pulsarintegration.PL81N.com, O=Pulsar Integration PL81NA Inc.,ST=Sydney,C=AU) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(MQGET) XMITQ(PL81N) [ HPE NonStop ] $ mqpcf chs -qm PL81N -c PL92W.PL81N SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL92W.PL81N) CHLTYPE(RCVR) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) RQMNAME(PL92W) SECPROT(TLSV12) SSLCERTI(E=support@pulsarintegration.com, CN=www.pulsarintegration.com,O=Pulsar Integration Inc.,ST=Chiba,C=JP) SSLPEER(SERIALNUMBER=01,CN=www.pulsarintegration.PL92W.com, O=Pulsar Integration PL92WA Inc.,ST=Chiba,C=JP) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE) ※ HPE NonStop -> Windows [ HPE NonStop ] $ mqpcf chs -qm PL81N -c PL81N.PL92W SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL81N.PL92W) CHLTYPE(SDR) CONNAME(xxx.xxx.xxx.xxx(xxxx)) CHLINSTYPE(CURRENT) RQMNAME(PL92W) SECPROT(TLSV12) SSLCERTI(E=support@pulsarintegration.com, CN=www.pulsarintegration.com,O=Pulsar Integration Inc.,ST=Chiba,C=JP) SSLPEER(SERIALNUMBER=01, CN=www.pulsarintegration.PL92W.com,O=Pulsar Integration PL92WA Inc.,ST=Chiba,C=JP) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(MQGET) XMITQ(PL92W) [ Windows ] >mqpcf chs -qm PL92W -c PL81N.PL92W SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL81N.PL92W) CHLTYPE(RCVR) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) RQMNAME(PL81N) SECPROT(TLSV12) SSLCERTI(E=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com,O=Pulsar Integration SD Inc.,ST=Sydney,C=AU) SSLPEER(SERIALNUMBER=01,CN=www.sd.pulsarintegration.PL81N.com, O=Pulsar Integration PL81NA Inc.,ST=Sydney,C=AU) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE) ※ Linux -> HPE NonStop [ Linux ] $ mqpcf chs -qm PL91L -c PL91L.PL81N SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL91L.PL81N) CHLTYPE(SDR) CONNAME(xxx.xxx.xxx.xxx(xxxx)) CHLINSTYPE(CURRENT) RQMNAME(PL81N) SECPROT(TLSV12) SSLCERTI(E=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com,O=Pulsar Integration SD Inc.,ST=Sydney,C=AU) SSLPEER(SERIALNUMBER=01,CN=www.sd.pulsarintegration.PL81N.com, O=Pulsar Integration PL81NA Inc.,ST=Sydney,C=AU) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(MQGET) XMITQ(PL81N) [ HPE NonStop ] $ mqpcf chs -qm PL81N -c PL91L.PL81N SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL91L.PL81N) CHLTYPE(RCVR) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) RQMNAME(PL91L) SECPROT(TLSV12) SSLCERTI(E=support@ny.pulsarintegration.com, CN=www.ny.pulsarintegration.com,O=Pulsar Integration NY Inc.,ST=New York,C=US) SSLPEER(SERIALNUMBER=01,CN=www.ny.pulsarintegration.PL92L.com, O=Pulsar Integration PL91LA Inc.,ST=New York,C=US) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE) ※ HPE NonStop -> Linux [ HPE NonStop ] $ mqpcf chs -qm PL81N -c PL81N.PL91L SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL81N.PL91L) CHLTYPE(SDR) CONNAME(xxx.xxx.xxx.xxx(xxxx)) CHLINSTYPE(CURRENT) RQMNAME(PL91L) SECPROT(TLSV12) SSLCERTI(E=support@ny.pulsarintegration.com, CN=www.ny.pulsarintegration.com,O=Pulsar Integration NY Inc.,ST=New York,C=US) SSLPEER(SERIALNUMBER=01,CN=www.ny.pulsarintegration.PL92L.com, O=Pulsar Integration PL91LA Inc.,ST=New York,C=US) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(MQGET) XMITQ(PL91L) [ Linux ] $ mqpcf chs -qm PL91L -c PL81N.PL91L SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL81N.PL91L) CHLTYPE(RCVR) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) RQMNAME(PL81N) SECPROT(TLSV12) SSLCERTI(E=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com,O=Pulsar Integration SD Inc.,ST=Sydney,C=AU) SSLPEER(SERIALNUMBER=01,CN=www.sd.pulsarintegration.PL81N.com, O=Pulsar Integration PL81NA Inc.,ST=Sydney,C=AU) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE)


非推奨CipherSpecの有効化

古いMQバージョンの相手先と接続する必要がある場合等、SSL V3や非推奨のTLS V1を使用する必要がある場合があります。 もし、非推奨の CipherSpec を有効化する必要がある場合は、下記方法で有効化して使用します。
※デフォルトで使用できる CipherSpec や非推奨のCipherSpecの有効化の方法はMQの各バージョンやプラットフォームによって異なる場合があります。 詳しくは各エディションのドキュメントを参照してください。


推奨されない TLS CipherSpec の有効化

環境変数 AMQ_SSL_WEAK_CIPHER_ENABLE または qm.iniのSSLスタンザの AllowWeakCipherSpecに使用したい CipherSpec を指定します。

環境変数 AMQ_SSL_WEAK_CIPHER_ENABLE

AMQ_SSL_WEAK_CIPHER_ENABLE=ECDHE_RA_RC4_128_SHA256

qm.iniのSSLスタンザの AllowWeakCipherSpec

SSL:
AllowWeakCipherSpec=ECDHE_RA_RC4_128_SHA256


推奨されない SSL CipherSpec の有効化

環境変数 AMQ_SSL_WEAK_CIPHER_ENABLE または qm.iniのSSLスタンザの AllowWeakCipherSpecに使用したい CipherSpec を指定することに加え、環境変数 AMQ_SSL_V3_ENABLE=1 または qm.iniのSSLスタンザに AllowSSLV3=Yを設定することが必要です。

環境変数 AMQ_SSL_V3_ENABLE=1 および AMQ_SSL_WEAK_CIPHER_ENABLE

AMQ_SSL_V3_ENABLE=1
AMQ_SSL_WEAK_CIPHER_ENABLE=RC4_MD5_US

qm.iniのSSLスタンザの AllowSSLV3=Y および AllowWeakCipherSpec

SSL:
AllowSSLV3=Y
AllowWeakCipherSpec=RC4_MD5_US


推奨されない TLSv1 CipherSpec の有効化

環境変数 AMQ_TLS_WEAK_CIPHER_ENABLE または qm.iniのSSLスタンザの AllowWeakCipherSpecに使用したい CipherSpec を指定することに加え、環境変数 AMQ_TLS_V1_ENABLE=1 または qm.iniのSSLスタンザに AllowTLSV1=Yを設定することが必要です。

環境変数 AMQ_SSL_V3_ENABLE=1 および AMQ_TLS_WEAK_CIPHER_ENABLE

AMQ_TLS_V1_ENABLE=1
AMQ_TLS_WEAK_CIPHER_ENABLE=TLS_RSA_WITH_AES_128_CBC_SHA

qm.iniのSSLスタンザの AllowTLSV1=Y および AllowWeakCipherSpec

SSL:
AllowTLSV1=Y
AllowWeakCipherSpec=TLS_RSA_WITH_AES_128_CBC_SHA


SSL V3 CipherSpecを使用したチャネル接続

それでは、SSL V3のCipherSpecである RC4_MD5_US を使用したチャネルを実際に定義してみます。

※HPE NonStop -> Windows [ Windows/HPE NonStop ] SSL: AllowSSLV3=Yes AllowWeakCipherSpec=RC4_MD5_US #AllowTLSV13=TRUE ※受信側(今回のテストではWindows側)の qm.ini では、AllowTLSV13=TRUEをコメントアウトしないと、受信側で AMQ9616Eが出力され接続に失敗します。 AMQ9616Eのエラー・メッセージにはTLS 1.3と非推奨 CipherSpecs を同時に利用できないことが記載されています。 ---- AMQ9616E: リモート・ホスト '16.147.169.198' で提示された CipherSpec 'RC4_MD5_US' が有効ではありません。 説明: チャネルのサーバー側にある SSL または TLS サブシステムは、SSL または TLS クライ アントによって提示されたこの CipherSpec を拒否するような構成となっています。 このエラーは通常、使用可能な CipherSpec が、以下のいずれかの理由により限定され ている場合に発生します。 .... (g) TLS 1.3 を有効にしたら、キュー・マネージャー構成で有効になっているとしても 特定の非推奨 CipherSpecs を使用してキュー・マネージャーに接続することはできま せん。例えば、SSL v3、RC4 暗号、および暗号化ビット数が 112 より少ない暗号は、 拒否されます。これを解決するには、TLS 1.3 を無効にするか、TLS 1.3 でブロック されない CipherSpec を使用します。 ---- ※qm.iniの変更をチャネル定義での非推奨 CipherSpecの指定より先に行わないと、チャネル定義時に下記のようなエラー が発生して失敗します。 MQSC > alter chl(PL81N.PL92W.2) chltype(sdr) SSLCIPH(RC4_MD5_US) 1 : alter chl(PL81N.PL92W.2) chltype(sdr) SSLCIPH(RC4_MD5_US) AMQ8242: SSLCIPH definition wrong. ※qm.iniのSSLスタンザを変更したら、"refresh security"の実行、またはキューマネージャーを再起動します。 [ HPE NonStop ] $ mqpcf mqsc -qm PL81N -s "refresh security type(ssl)" [ Windows ] ※今回のテストでは、Windows(受信側)では、"refresh security"だけでは不十分で、キューマネージャーの再起動が 必要でした。 [ Windows ] >mqpcf mqsc -qm PL92W -s "def chl(PL81N.PL92W.2) chltype(rcvr) SSLCIPH(RC4_MD5_US)" [ HPE NonStop ] $ mqpcf mqsc -qm PL81N -s "def ql(PL92W2) usage(xmitq)" $ mqpcf mqsc -qm PL81N -s "def chl(PL81N.PL92W.2) chltype(sdr) conname('xxx.xxx.xxx.xxx(xxxx)') xmitq(PL92W2) SSLCIPH(RC4_MD5_US)" [ HPE NonStop ] $ mqpcf sta -qm PL81N -c PL81N.PL92W.2 $ mqpcf chs -qm PL81N -c PL81N.PL92W.2 SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL81N.PL92W.2) CHLTYPE(SDR) CONNAME(xxx.xxx.xxx.xxx(xxxx)) CHLINSTYPE(CURRENT) RQMNAME(PL92W) SECPROT(SSLV3) SSLCERTI(E=support@pulsarintegration.com, CN=www.pulsarintegration.com,O=Pulsar Integration Inc.,ST=Chiba,C=JP) SSLPEER(SERIALNUMBER=01, CN=www.pulsarintegration.PL92W.com,O=Pulsar Integration PL92WA Inc.,ST=Chiba,C=JP) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(MQGET) XMITQ(PL92W2) [ Windows ] >mqpcf chs -qm PL92W -c PL81N.PL92W.2 SECPROT SSLCERTI SSLPEER 1: CHANNEL(PL81N.PL92W.2) CHLTYPE(RCVR) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) RQMNAME(PL81N) SECPROT(SSLV3) SSLCERTI(E=support@sd.pulsarintegration.com, CN=www.sd.pulsarintegration.com,O=Pulsar Integration SD Inc.,ST=Sydney,C=AU) SSLPEER(SERIALNUMBER=01,CN=www.sd.pulsarintegration.PL81N.com, O=Pulsar Integration PL81NA Inc.,ST=Sydney,C=AU) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE)

非推奨の CipherSpec の有効化に関する詳細な制約や構成手順は、MQのエディションや CipherSpec によって異なることが予想されますので、構成の際は十分ご注意ください。

このページの先頭へ

このページの先頭へ