[Db2] JDBCクライアントで利用可能なSSL/TLSバージョンの確認方法

## 調査対象
以下の2点を確認します。
 * JDBCクライアントで利用可能なSSL/TLSバージョンの確認方法
 * Db2 11.5.7以前の古いJDBCクライアントからDb2 V12.1サーバーへのSSL接続時の最小構成

## 前提
DBクライアントとDBサーバー間のSSL/TLS通信においては、クライアント、サーバー双方の使用可能なSSL/TLSのバージョンのうち、最もセキュアな(新しい)ものが使われます。

Db2接続に利用可能なクライアントの種別は様々ありますが、非Java(ODBC,CLI,組み込みSQL,.NET等)とJava(JDBC)クライアントとで、構成方法やデフォルトで利用されるSSL/TLSバージョンが違うようでした。

この記事では、Java(JDBC)からDb2へのSSL/TLS接続について確認したメモを残します。

## Db2 for LUW におけるSSL/TLS対応バージョンの変遷
Db2 11.5以降のSSL/TLS関連の変更点として、マニュアルで確認できる情報は以下の通り。

| Db2 Version<br>(Modレベル) | 変更内容 |
|:-|:-|
| V11.5 GA | <ul><li>The default value for SSL_VERSIONS is null. If you set the parameter to null or TLSv1, the parameter enables support for TLS version 1.0 (RFC2246) and TLS version 1.1 (RFC4346). </li><li>TLS version 1.2 is not enabled by default. </li></ul> |
| V11.5.8  |  <ul><li>TLS 1.3 サポート開始</li></ul>  |
| V11.5.9  | <ul><li>TLS 1.2 がデフォルトの TLS バージョンになった</li><li>TLS 1.0 および 1.1 はデフォルトでは使用できなくなった</li></ul>   |
| V12.1.0(GA)  | <ul><li>TLS 1.2, 1.3がデフォルトで有効</li><ul><li>TLS1.3 をサポートしていないクライアントとの互換性を保つため</li><li>セキュリティ向上を図るにはSSL_VERSIONSパラメータの値として"TLSV13"を設定することでTLS1.3を強制することもできる</li></ul><li>TLS 1.0, 1.1サポート廃止</li></ul> |

Db2 バージョン11.5 GA時点のマニュアル記述はオンラインマニュアルでは確認できないため、2020年時点のPDF版英語マニュアルより引用しています。引用の通り、V11.5 GA時点のDb2サーバーでは、デフォルトでTLS 1.0, 1.1のみ利用可能でした。(明示指定すればTLS v1.2も利用可能)

しかしDb2 12.1ではTLS 1.0, 1.1サポートが廃止されたことから、SSLバージョン無指定の古いクライアント(TLS 1.0,1.1限定利用)からDb2 V12.1へ接続しようとすると、エラーとなります。


## Db2へのSSL/TLS接続時のJDBCプロパティ（最低限）
JDBCクライアントからのSSL/TLS接続構成として、色々なJDBCプロパティが提供されますが、必要最低限のプロパティとしては以下のものがあげられます。

| プロパティ名 | 必須 | デフォルト値 | 補足 |
|:-|:-:|:-:|:-|
| sslConnection  |〇   | false  | <ul><li>SSLソケットを使用してデータ・ソースに接続するかどうかを指定</il><li>Type4接続にのみ適用される</li></ul>  |
| sslTrustStoreLocation  | 〇  | ー  | <ul><li>SSL接続のサーバー証明書を含むクライアント上のJavaトラストストアの絶対パス名を指定</li><li>sslConnectionプロパティがtrueに設定されている場合にのみ使用されるプロパティ</li></ul>  |
| sslTrustStorePassword  | 〇  | ー  | <ul><li>SSL接続用のサーバー証明書が含まれるクライアント上のJavaトラストストアのパスワードを指定 </li></ul> |
| sslVersion  | ー  | Null<br>→ JREに依存(後述)  | <ul><li>アプリケーションがSSL接続に使用できるSSLバージョンまたはTLSプロトコル・レベルを指定</li><li>セキュリティ標準が存在する場合や、Db2サーバーとクライアントのバージョンが異なるなど、使用するTLSバージョンを明示的に指定する必要性がある構成では必須</li><li>__Db2 11.5.7以前からDb2 12.1サーバーへの接続時に必要__</li></ul>  |

参考：[Db2マニュアル：サポートされるすべてのデータベース製品に共通の IBM Data Server Driver for JDBC and SQLJ プロパティー](https://www.ibm.com/docs/ja/db2/12.1.0?topic=pdsdjs-common-data-server-driver-jdbc-sqlj-properties-all-database-products)

このうち、sslVersionについてはデフォルト値がはっきりわからないため、一度追いかけておこうと思いました。

## Db2 JDBCクライアントでサポートされるSSL/TLSバージョン

Db2クライアントがJava/JDBCアプリの場合、[マニュアル](https://www.ibm.com/docs/ja/db2/12.1.0?topic=pdsdjs-common-data-server-driver-jdbc-sqlj-properties-all-database-products)によるとクライアント側の利用するSSL/TLSバージョンは以下の順に決まります。
1. JDBCプロパティ sslVersion が明示的に設定されていれば、その値が採用される
1. sslVersionが指定されていない場合、利用するJREのデフォルトSSL/TLSバージョンが採用される

 > __sslVersion__
 sslVersion のデフォルト値は null (設定しない) です。 
 Connection または DataSource オブジェクトで sslVersion が定義されていない場合は、Java ランタイム環境のデフォルトの TLS レベルまたは SSL バージョンが SSL 接続に適用されます。

では、利用するJRE(Java実行環境、Javaランタイム)のデフォルトSSL/TLSレベルはどうやって確認したらよいか？
JREのドキュメントを読みます。

## JREのサポートするSSL/TLSバージョンを確認する

例えば、IBM Semeru RuntimesがサポートするSSL/TLSバージョンはどれか？
こちらに情報があります。

[IBM Semeru Runtimes security migration guide](https://www.ibm.com/support/pages/semeru-runtimes-security-migration-guide)

> IBM SDK, Java Technology Edition, version 8 contains the IBM security implementation. However, version 11 of the IBM Semeru Runtime™ Open Edition and IBM Semeru Runtime™ Certified Edition contain the OpenJDK security implementation. Differences between these implementations might require code changes to your applications.
OpenJDK contains a Java cryptographic implementation that includes TLS v1.3 since JDK11.

Java8と11以降とで仕切りが違いそうです。
今回想定するのはJava21です。
Java11以降はOpenJDKのセキュリティ実装が包含されているようなので、OpenJDKのドキュメントを見ます。

[8 Java Secure Socket Extension (JSSE)リファレンス・ガイド](https://docs.oracle.com/javase/jp/21/security/java-secure-socket-extension-jsse-reference-guide.html#GUID-93DEEE16-0B70-40E5-BBE7-55C3FD432345)

> JSSE APIでは、次のセキュリティ・プロトコルがサポートされています。
　DTLS: バージョン1.0および1.2
　TLS: バージョン1.0、1.1、1.2および1.3
　SSL (Secure Socket Layer): バージョン3.0

[Oracle JDK 移行ガイド](https://docs.oracle.com/javase/jp/15/migrate/index.html#GUID-19C53993-A9C3-48EC-BD8E-3F3934CF9D6D)

> JDK 11およびJDK 12のセキュリティ更新
JDK 11およびJDK 12では、次のセキュリティ・アップデートが行われました:
JDK 11リリースには、TLS (Transport Layer Security) 1.3仕様(RFC 8446)の実装が含められました。
(以下略)

Java21を使う前提であればTLS 1.0,1.1,1.2,1.3が利用可能で、TLS1.3サポート開始のタイミングはJava11ということでした。


## 検証：Db2 11.5.x JDBCクライアント - Db2 12.1 サーバー

Db2 12.1サーバーではデフォルトで、TLSv1.2,1.3が利用可能です。
V11.5.x Db2 JDBCクライアントからDb2 12.1サーバーに接続した結果は以下の通り。

 * Java Runtime Environment： Java 21
 * Db2 サーバーバージョン： V12.1.1

| Db2<br>JDBCドライバ<br>バージョン | 11.5.4<br>(4.27.25) | 11.5.5.1<br>(4.28.11) | 11.5.6<br>(4.29.24)| 11.5.7<br>(4.31.10) | 11.5.8<br>(4.32.28) | 11.5.9<br>(4.33.31) |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| sslVersion<br>指定なし  | ｘ  | ｘ  | ｘ  |ｘ   | 〇  | 〇  |
|sslVersion=<br>"TLSv1.2"  | 〇  | 〇  | 〇  | 〇  | 〇  |  〇 |
|sslVersion=<br>"TLSv1.3"  | 〇  | 〇  | 〇  | 〇  |  〇 | 〇  |

sslVersionを明示的に指定しておけば、どのMod(Fix)レベルのDb2 11.5のJDBCドライバーからもDb2 12.1へ接続可能でした。

JDBCプロパティとしてsslVersionを指定していない場合も、Java21上で動くJDBCアプリなのですから暗黙的にTLSv1.3またはTLSv1.2を利用してDb2 12.1と暗号化通信が確立されるではと期待しましたが、そのような結果とはなりませんでした。


## 補足：SSL/TLS通信時のLiberty server.xmlサンプル
```xml:server.xml
<server description="liberty1">

<!-- Enable features -->
<featureManager>
    <feature>webProfile-8.0</feature>
</featureManager>

<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint host="*" httpPort="19080" httpsPort="19443" id="defaultHttpEndpoint"/>

<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>

<!-- DataSource Conig(Db2)  -->
<library id="DB2JCC4Lib">
  <fileset dir="${shared.resource.dir}/db2" includes="db2jcc4.jar"/>
</library>

<!-- Declare the runtime database -->
<dataSource id="Db2-DS1" jndiName="jdbc/sample">
 <jdbcDriver libraryRef="DB2JCC4Lib"/>
 <properties.db2.jcc
         databaseName="nocon"
         driverType="4"
         serverName="db2.myssl-test.com"
         portNumber="25123"
         user="my1211"
         password="xxxxxxxx"
         sslConnection="true"
         sslTrustStoreLocation="${shared.resource.dir}/db2/myTrustStore.jks"
         sslTrustStorePassword="xxxxxxxx"/>

</dataSource>

<!-- Declare the application -->
<application id="JDBCSample" location="JDBCSampleEAR.ear" name="JDBCSample" type="ear"/>

</server>
```



## 補足：TLS1.2を明示しない(古いJDBCクライアントからDb2 12.1への接続時エラーメッセージ
SSLバージョンを明示的に指定しなかった場合のエラーメッセージはこちら。
ERRORCODE=-4499、NoSuchAlgorithmException、SQLNonTransientException などのキーワードが出力されています。

[NoSuchAlgorithmException](https://docs.oracle.com/javase/jp/8/docs/api/java/security/NoSuchAlgorithmException.html):
> ある暗号アルゴリズムが要求されたにもかかわらず、現在の環境では使用可能でない場合にスローされます。

:::note warn
2025.05.13追記：
トラストストアのパスワード間違いでもNoSuchAlgorithmExceptionがスローされることがあるようです。
https://www.ibm.com/support/pages/ibm-content-collector-will-not-start-error-ibmjavasecuritynosuchalgorithmexception-error-constructing-implementation-appears
<br>
:::


※ 右方向スクロールしないとメッセージ本体が見えないかもしれません

```
[2025/04/30 18:38:25:224 JST] 00000058 com.ibm.ws.logging.internal.impl.IncidentImpl                I FFDC1015I: FFDC 発生事象が作成されました: "com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException: DSRA8100E: DataSource から PooledConnection を取得できません。 with SQL State : 08001 SQL Code : -4499 com.ibm.ejs.j2c.poolmanager.FreePool.createManagedConnectionWithMCWrapper 199" ロケーション: ffdc_25.04.30_18.38.25.0.log
[2025/04/30 18:38:25:230 JST] 00000058 com.ibm.ws.logging.internal.impl.IncidentImpl                I FFDC1015I: FFDC 発生事象が作成されました: "javax.resource.spi.ResourceAllocationException: DSRA8100E: DataSource から PooledConnection を取得できません。 with SQL State : 08001 SQL Code : -4499 com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection 299" ロケーション: ffdc_25.04.30_18.38.25.1.log
[2025/04/30 18:38:25:231 JST] 00000058 SystemOut                                                    O  *** SQLException !! *** 
[2025/04/30 18:38:25:231 JST] 00000058 SystemOut                                                    O  ++ ErrorCode: -4499
[2025/04/30 18:38:25:231 JST] 00000058 SystemOut                                                    O  ++ SQLState : 08001
[2025/04/30 18:38:25:231 JST] 00000058 SystemOut                                                    O  ++ Message  : [jcc][t4][2043][11550][4.31.10] 例外 com.ibm.db2.jcc.am.SqlException: サーバー db2.myssl-test.com/10.44.51.139 へのソケットのオープンでエラーが発生しました。ポート: 25,123 メッセージ: [jcc][t4][20133][12451][4.31.10] SSL 接続中に NoSuchAlgorithmException をキャッチしました。  詳しくは、添付の Throwable を参照してください。 ERRORCODE=-4499, SQLSTATE=null ERRORCODE=-4499, SQLSTATE=08001 DSRA0010E: SQL 状態 = 08001、エラー・コード = -4,499
[2025/04/30 18:38:25:231 JST] 00000058 SystemOut                                                    O  ++ String   : java.sql.SQLNonTransientException: [jcc][t4][2043][11550][4.31.10] 例外 com.ibm.db2.jcc.am.SqlException: サーバー db2.myssl-test.com/10.44.51.139 へのソケットのオープンでエラーが発生しました。ポート: 25,123 メッセージ: [jcc][t4][20133][12451][4.31.10] SSL 接続中に NoSuchAlgorithmException をキャッチしました。  詳しくは、添付の Throwable を参照してください。 ERRORCODE=-4499, SQLSTATE=null ERRORCODE=-4499, SQLSTATE=08001 DSRA0010E: SQL 状態 = 08001、エラー・コード = -4,499
[2025/04/30 18:38:25:231 JST] 00000058 SystemErr                                                    R java.sql.SQLNonTransientException: [jcc][t4][2043][11550][4.31.10] 例外 com.ibm.db2.jcc.am.SqlException: サーバー db2.myssl-test.com/10.44.51.139 へのソケットのオープンでエラーが発生しました。ポート: 25,123 メッセージ: [jcc][t4][20133][12451][4.31.10] SSL 接続中に NoSuchAlgorithmException をキャッチしました。  詳しくは、添付の Throwable を参照してください。 ERRORCODE=-4499, SQLSTATE=null ERRORCODE=-4499, SQLSTATE=08001 DSRA0010E: SQL 状態 = 08001、エラー・コード = -4,499
[2025/04/30 18:38:25:231 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.b7.a(b7.java:338)
[2025/04/30 18:38:25:283 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.b7.a(b7.java:435)
[2025/04/30 18:38:25:283 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.a0.a(a0.java:462)
[2025/04/30 18:38:25:283 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.a0.<init>(a0.java:97)
[2025/04/30 18:38:25:283 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.a.b(a.java:367)
[2025/04/30 18:38:25:283 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.b.newAgent_(b.java:2251)
[2025/04/30 18:38:25:283 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.Connection.initConnection(Connection.java:855)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.Connection.<init>(Connection.java:800)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.b.<init>(b.java:364)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.DB2PooledConnection.<init>(DB2PooledConnection.java:83)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.DB2ConnectionPoolDataSource.getPooledConnectionX(DB2ConnectionPoolDataSource.java:348)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.DB2ConnectionPoolDataSource.getPooledConnection(DB2ConnectionPoolDataSource.java:131)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.impl.DatabaseHelper$1.run(DatabaseHelper.java:1516)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.impl.DatabaseHelper$1.run(DatabaseHelper.java:1502)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at java.base/java.security.AccessController.doPrivileged(AccessController.java:784)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at java.base/java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:840)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.impl.DatabaseHelper.getPooledConnection(DatabaseHelper.java:1502)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.impl.DB2JCCHelper.getPooledConnection(DB2JCCHelper.java:705)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.getConnection(WSManagedConnectionFactoryImpl.java:857)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:698)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1389)
[2025/04/30 18:38:25:284 JST] 00000058 SystemErr                                                    R 	at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1263)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:1471)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:576)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:308)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:143)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:117)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at sample.test.JDBCAccessBean.setIsoTest(JDBCAccessBean.java:685)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at sample.test.SampleJDBCServlet.performTask(SampleJDBCServlet.java:58)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at sample.test.SampleJDBCServlet.doPost(SampleJDBCServlet.java:38)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:706)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:791)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1266)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:754)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:451)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:197)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:100)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at io.openliberty.http.monitor.ServletFilter.doFilter(ServletFilter.java:76)
[2025/04/30 18:38:25:285 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.security.jaspi.JaspiServletFilter.doFilter(JaspiServletFilter.java:58)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1069)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1260)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:5096)
[2025/04/30 18:38:25:286 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:328)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1047)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:293)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1284)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:500)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:459)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:569)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:503)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:363)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:330)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:169)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:77)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:516)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:586)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:970)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1059)
[2025/04/30 18:38:25:287 JST] 00000058 SystemErr                                                    R 	at com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:298)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at java.base/java.lang.Thread.run(Thread.java:1595)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R Caused by: 
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R com.ibm.db2.jcc.am.SqlException: [jcc][t4][20133][12451][4.31.10] SSL 接続中に NoSuchAlgorithmException をキャッチしました。  詳しくは、添付の Throwable を参照してください。 ERRORCODE=-4499, SQLSTATE=null
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.b7.a(b7.java:794)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.b7.a(b7.java:66)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.am.b7.a(b7.java:98)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.w.run(w.java:287)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at java.base/java.security.AccessController.doPrivileged(AccessController.java:748)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.a0.a(a0.java:435)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	... 63 more
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R Caused by: 
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R java.security.NoSuchAlgorithmException: SSL_TLSv2 SSLContext not available
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
[2025/04/30 18:38:25:288 JST] 00000058 SystemErr                                                    R 	at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:185)
[2025/04/30 18:38:25:289 JST] 00000058 SystemErr                                                    R 	at com.ibm.db2.jcc.t4.w.run(w.java:141)
[2025/04/30 18:38:25:289 JST] 00000058 SystemErr                                                    R 	... 65 more
[2025/04/30 18:38:25:289 JST] 00000058 SystemOut                                                    O  *********************************** 
```