DB2 6 min read

Db2にSSLで接続できない ― SQL30081Nの原因を切り分ける逆引き

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ポートで待ち受けていない サーバーの DB2COMMSSL を足して db2stopdb2start

プロトコル表示にも差が出ます。414 と 420 は "SSL"、104 と 111 は "TCP/IP"です。SSL構成中なのに "TCP/IP" と出ていたら、クライアントはSSLで喋るつもりが無い状態なので、カタログかポートを先に見ます。

「エラーが検出された場所」も切り分けに使えます。空欄ならクライアント内部で落ちており(414・420)、サーバーのIPが入っていればTCPまでは届いています(104・111)

いちばん多い真因:DB2COMM に SSL を足し忘れている

サーバー側のSSL設定はDBM CFGの4つ(SSL_SVR_KEYDB / SSL_SVR_STASH / SSL_SVR_LABEL / SSL_SVCENAME)ですが、これが全部正しくても DB2COMMSSL が入っていなければSSLポートは開きません。設定値をいくら見直しても直らないので、ss -ltnp で待ち受けを先に確認してください。

繋がった後、本当に暗号化されているか

接続できたことは暗号化の証明になりません。平文ポートを残したまま移行している場合はとくに、サーバー側で確認します。

db2 "SELECT APPLICATION_HANDLE, CLIENT_PROTOCOL, CLIENT_IPADDR
       FROM TABLE(MON_GET_CONNECTION(MON_GET_APPLICATION_HANDLE(), -1))"

CLIENT_PROTOCOLSSL4 なら暗号化されています。TCPIP4 は平文です(末尾の数字はIPのバージョンで、IPv6なら SSL6)。

それでも切り分からないとき(実機ログつきの詳解)

鍵ストアの作り方からクライアント設定までの構成手順、4パターンの失敗を実機で再現したログ、TLSのバージョンと暗号スイートの実測値は、Zennのフル記事にまとめています。

▶ Zennで続きを読む(無料)

Db2をSSL接続にする ― 繋がらないときのSQL30081Nは414と420で原因が違う


実機ログつきの詳解を読む →

関連: SQL30081N 通信エラーを切り分ける(SSL以外の原因)SQL30108N はエラーではない(ACRの成功通知)

構築と同時に満たすべきDb2のセキュリティ設計(認証・暗号化・権限)を、現場の経験談を交えて本書 第3章「セキュリティ設計の基本と実装」で解説しています。

現場で引ける Db2 の教科書

現場で引ける!Db2実践エンジニア・バイブル

Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。

アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集

Zennで読む(¥2,000)→