GSKit の一般的なエラー
Db2® は、Transport Layer Security (TLS) およびネイティブ暗号化に対する暗号要求を処理するために、 IBM® Global Security Kit (GSKit) 製品に依存しています。 GSKit がエラーを検出すると、 Db2 によって SQLCA にメッセージ・トークンが適切な SQLCODE とともに戻され、エラーが報告されます。
これらのトークンでは、GSKit Error: XXX (「XXX」は GSKIT 戻りコードを表す数値) という形式が使用されます。また、これらのトークンが SQL1782N と理由コード 5 とともに返される場合、これらは SQLCA 内で理由コード・メッセージ・トークンと 5:XXX の形式で連結されます。
GSKit 戻りコードについて詳しくは、 GSKit 戻りコードを参照してください。
GSKit 401: GSK_ERROR_BAD_DATE
この戻りコードは、 SSL_SVR_LABEL データベース・マネージャー構成パラメーターまたは SSL_KMIP_CLIENT_CERTIFICATE_LABEL 鍵ストア構成パラメーターによって指定された証明書がまだ有効でないか、現在のシステム日付に基づいて有効期限が切れていることを示します。 401 エラーを解決するには、まずシステム日付が正しいことを確認してください。 システム日付が正確である場合、証明書が CA 署名の場合は更新され、自己署名の場合は再作成される必要があります。
GSKit 402: GSK_ERROR_NO_CIPHERS
この戻りコードは、クライアントとサーバーが共通の TLS バージョンまたは暗号をネゴシエーションできなかったことを示します。 この問題を解決するには、クライアントがサポートする TLS バージョンと暗号をサーバーが有効にしていることを確認してください。 Db2 サーバーでは、 SSL_VERSIONS および SSL_CIPHERSPECS データベース・マネージャー構成パラメーターを調整することによってこれを行うことができます。 Db2 クライアントの場合、または Db2の KMIP 構成の場合は、構成ファイル内の TLSVersion キーワードを使用してこれを行うことができます。
GSKit 407: GSK_ERROR_BAD_KEYFILE_LABEL
この戻りコードは、指定されたラベルが見つからないことを示しています。 このエラーの最も一般的な原因は、 SSL_SVR_LABEL データベース・マネージャー構成パラメーターまたは SSL_KMIP_CLIENT_CERTIFICATE_LABEL 鍵ストア構成パラメーターのいずれかの値が正しくないことです。 この問題は、つづりが誤っているか、ラベル値を引用符で囲んでいることが原因で発生する可能性があります。 別の原因として、 Db2が必要とする秘密鍵のない証明書をラベルが表していることが考えられます。
GSKit 408: GSK_ERROR_BAD_KEYFILE_PASSWORD
この戻りコードは、指定された鍵ファイル・パスワードが正しくないために鍵ファイルを使用できないことを示しています。 鍵ファイルが破損している可能性もあります。
- 鍵ファイルにアクセスするためのパスワードが正しくない。
- パスワード・スタッシュ・ファイルが使用されている場合、 Db2 には、パスワード・スタッシュ・ファイルにアクセスするための適切な権限がありません。
- 互換性のないバージョンの GSKit を使用してパスワード stash ファイルが作成された。注: GSKit バージョン 8.0.50.69 (およびそれ以上) は、旧バージョンの GSKit が読み取れないパスワード stash ファイルを生成します。 このシナリオが当てはまる可能性があると考えられる場合は、現行バージョンの GSKit を使用して stash ファイルを再作成してみてください。
GSKit 410: GSK_ERROR_BAD_MESSAGE
- Db2 クライアントまたは鍵ストアにアクセスしようとしているサーバーに、正しいファイアウォール・アクセスがありません。
- TLS が有効になっている Db2 クライアントが、 TLS が有効になっていないポート上のサーバーに接続しようとしています。
- TLS が有効になっていない Db2 クライアントが、 TLS が有効になっているポート上のサーバーに接続しようとしています。
GSKit 414: GSK_ERROR_BAD_CERT
この戻りコードは、 TLS 関係のパートナーから誤った形式の証明書を受け取ったことを示します。
- 自己署名証明書を使用しているが、証明書が欠落している。
- 使用されている証明書は、
Basic Constraints拡張がアクティブでないローカル認証局からのものである。注:ALLOW_NONCRITICAL_BASIC_CONSTRAINT鍵ストア構成パラメーターを使用して、この問題をバイパスすることができます。 - CA 署名証明書を使用していますが、CA ルート証明書が欠落しています。
- クライアントは Server Name Indication (SNI) をサポートしていません。サーバー環境では、SNI を使用して TLS 接続を正しいエンドポイントにルーティングする必要があります。 サーバーが SNI に依存している場合は、クライアントを Db2 11.5.7 以降にアップグレードします。
- チェーン内のいずれかの証明書の有効期限が切れています。
- GSKit 414 エラーの解決
- 以下の項目に対処することにより、414 エラーを解決できます。
- 予期される証明書チェーンがサーバーによって戻されていることを確認してください。 これは、 OpenSSLなどのツールを使用して、 Db2 の外部で行うことができます。
予期される証明書が返されない場合は、ピア上の構成を修正する必要があります。openssl s_client -connect <hostname>:<port> -showcerts - ステップ 1で返された証明書チェーンを検証するための正しい証明書がクライアントにあることを確認します。 クライアントで使用されている証明書は有効でなければならず (有効期限が切れていてはなりません)、サブジェクトと発行者は同じでなければなりません。 サーバーが自己署名証明書を使用する場合、クライアント上で使用されている証明書は、サーバーによって返される証明書と一致している必要があります。 サーバーが CA 署名証明書を使用している場合は、CA に連絡して、使用する証明書を判別してください。
クライアント上の証明書が鍵データベース内に含まれている場合は、GSKit を使用して証明書の詳細を検査します。
クライアントがベア証明書ファイルを使用している場合は、GSKit または OpenSSL などの OS ツールを使用して証明書を検査します。gsk8capicmd_64 -cert -details -label <certificate label> -db /path/to/cert.p12 -stashedgsk8capicmd_64 -cert -details -file /path/to/cert.pem openssl x509 -in /path/to/cert.pem -noout -text
- 予期される証明書チェーンがサーバーによって戻されていることを確認してください。 これは、 OpenSSLなどのツールを使用して、 Db2 の外部で行うことができます。
GSKit 415: GSK_ERROR_BAD_PEER および GSKit 420: GSK_ERROR_SOCKET_CLOSED
- Db2 クライアントがこのエラー・コードを戻した場合は、サーバー上の診断ログを調べてください。
- Db2 サーバーがこのエラー・コードを返した場合は、クライアントの診断ログを調べてください。
例
以下の例は、414 エラーを解決する際に、ポート 25001 でホスト・サーバー 127.0.0.1 に対して OpenSSL コマンドを実行した場合の出力を示しています。 ステップ 1を参照してください。openssl s_client -connect 127.0.0.1:25001
CONNECTED(00000003)
depth=0 CN = test
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = test
verify return:1
---
Certificate chain
0 s:/CN=test
i:/CN=test
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIC4jCCAcqgAwIBAgIIWj6sV07x6hAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE
...
d8VGLAD8JA71mZ8Rhos2I5cYRkQ+ug==
-----END CERTIFICATE-----
subject=/CN=test
issuer=/CN=test
---以下の例は、414 エラーを解決するときに OpenSSL コマンドを実行すると返される証明書の詳細を示しています。 ステップ 2を参照してください。openssl x509 -in test.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=zen-ca-certificate
Validity
Not Before: Jan 1 12:00:00 2022 GMT
Not After : Jan 1 12:00:00 2024 GMT
Subject: CN=zen-ca-certificate以下の例は、414 エラーを解決するときに GSKit コマンドを実行して返される証明書の詳細を示しています。 ステップ 2を参照してください。gsk8capicmd_64 -cert -details -file test.pem
Label : CN=zen-ca-certificate
Key Size : 2048
Version : X509 V3
Serial : ffffffffffffffffffffffffffffffff
Issuer : CN=zen-ca-certificate
Subject : CN=zen-ca-certificate
Not Before : January 1, 2022 12:00:00 AM GMT
Not After : January 1, 2024 12:00:00 AM GMTNot After 日付は、証明書の有効期限がいつ切れるかを示します。 Issuer と Subject も表示されます。 Serial 番号を使用して、クライアントとサーバーの両方に正しい証明書が存在するかどうかを確認できます。