Db2をSSL接続に切り替えた直後、クライアントから繋がらない。返ってくるのは SQL30081N です。
SQL30081N 通信エラーが検出されました。使用中の通信プロトコル: "SSL"。
使用中の通信 API: "SOCKETS"。エラーが検出された場所: ""。
エラーを検出した通信機能: "sqlccSSLSocketSetup"。
プロトコル固有のエラー・コード: "414"、"*"、"*"。 SQLSTATE=08001
SQL30081N は通信の確立に失敗したことだけを示すコードで、SSLの構成ミスも、ポートの取り違えも、証明書の不足も、すべて同じコードで返ります。この記事ではメッセージのどこを見れば原因が決まるかを逆引きでまとめます。実機ログつきの構成手順と詳解は末尾のZenn記事にあります。
まず見る(結論)
見るのはコードの番号ではなく、メッセージ内の「エラーを検出した通信機能」と「プロトコル固有のエラー・コード」の組み合わせです。この2つで原因がほぼ一意に決まります。
# サーバー側: SSLポートで待ち受けているか
ss -ltnp | grep -E '50000|50001'
# 待ち受けていなければ DB2COMM を疑う
db2set -all | grep DB2COMM
症状 → 原因 → 対処(逆引き)
| 通信機能 / コード | よくある原因 | まず打つ手 |
|---|---|---|
sqlccSSLSocketSetup / 414 |
クライアントがサーバー証明書を持っていない | SSL_CLNT_KEYDB の鍵ストアに -cert -add でサーバーの公開鍵を入れる |
sqlccSSLSocketSetup / 420 |
平文ポートに SECURITY SSL で当てている |
カタログのポート番号を SSL_SVCENAME の値に直す |
recv / 104 |
SSLポートにカタログの SECURITY SSL なしで当てている |
ノードを uncatalog して security ssl を付け直す |
connect / 111 |
SSLポートで待ち受けていない | サーバーの DB2COMM に SSL を足して db2stop/db2start |
プロトコル表示にも差が出ます。414 と 420 は "SSL"、104 と 111 は "TCP/IP"です。SSL構成中なのに "TCP/IP" と出ていたら、クライアントはSSLで喋るつもりが無い状態なので、カタログかポートを先に見ます。
「エラーが検出された場所」も切り分けに使えます。空欄ならクライアント内部で落ちており(414・420)、サーバーのIPが入っていればTCPまでは届いています(104・111)。
サーバー側のSSL設定はDBM CFGの4つ(SSL_SVR_KEYDB / SSL_SVR_STASH / SSL_SVR_LABEL / SSL_SVCENAME)ですが、これが全部正しくても DB2COMM に SSL が入っていなければSSLポートは開きません。設定値をいくら見直しても直らないので、ss -ltnp で待ち受けを先に確認してください。
繋がった後、本当に暗号化されているか
接続できたことは暗号化の証明になりません。平文ポートを残したまま移行している場合はとくに、サーバー側で確認します。
db2 "SELECT APPLICATION_HANDLE, CLIENT_PROTOCOL, CLIENT_IPADDR
FROM TABLE(MON_GET_CONNECTION(MON_GET_APPLICATION_HANDLE(), -1))"
CLIENT_PROTOCOL が SSL4 なら暗号化されています。TCPIP4 は平文です(末尾の数字はIPのバージョンで、IPv6なら SSL6)。
それでも切り分からないとき(実機ログつきの詳解)
鍵ストアの作り方からクライアント設定までの構成手順、4パターンの失敗を実機で再現したログ、TLSのバージョンと暗号スイートの実測値は、Zennのフル記事にまとめています。
関連: SQL30081N 通信エラーを切り分ける(SSL以外の原因) / SQL30108N はエラーではない(ACRの成功通知)
構築と同時に満たすべきDb2のセキュリティ設計(認証・暗号化・権限)を、現場の経験談を交えて本書 第3章「セキュリティ設計の基本と実装」で解説しています。
現場で引ける Db2 の教科書
現場で引ける!Db2実践エンジニア・バイブル
Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。
アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集。