ライブラリーの更新 新着
このページで扱うトピック
Omiseのライブラリとサーバー証明書の更新
概要
Omiseの公式ライブラリは、以前は証明書ピンニング(certificate pinning)というセキュリティ手法を採用していました。これは、想定されるサーバー証明書をライブラリ自体にハードコードしておく手法です。証明書ピンニングは現在ベストプラクティスとはみなされていないため、Omiseのライブラリからは削除されました。ただし、ピン留めされた古いバージョンのライブラリを引き続き使用している場合、ピン留めされた証明書が更新されると、Omiseのサーバーを信頼できなくなります。実際には、古いバージョンのライブラリを使用していると、チャージ作成を含むAPIリクエストが警告なく失敗する可能性があるということです。
これに関連して、もう一つの問題があります。OmiseのTLS証明書チェーンは、DigiCert G2証明書をルートとしています。ほとんどのシステムはすでにこの証明書を信頼していますが、古いサーバーやパッチ適用の頻度が低いサーバーでは信頼されていない場合があり、その場合は手動でインストールする必要があります。
2026年9月時点で確認済み: api.omise.coに対して証明書チェーンを確認したところ、OmiseのAPIは現在DigiCert Global Root G2にチェーンしていることが確認されました(中間証明書はThawte TLS RSA CA G1)。そのため、以下のG2向け手順は現時点で正確です。ただし、DigiCertは2026年10月15日付けで既定のTLS発行を新しいG5階層に切り替えます(DigiCertの公式アナウンスを参照)。また、現在の証明書の有効期限は2026年10月9日であり、この切り替えのわずか6日前です。この証明書が次回更新される際には、G5階層から発行される可能性があります。証明書の更新後は、このページの内容を再度ご確認ください。
確認すべき2つの独立した項目: (1) お使いのOmiseライブラリのバージョン、(2) サーバーが信頼するルート証明書。ほとんどの場合は(1)への対応のみで十分ですが、ライブラリを更新してもリクエストが失敗し続ける場合は、(2)についても確認してください。
プラットフォーム別に見られる症状:
- Python/curl/OpenSSL系:
certificate verify failed、unable to get local issuer certificate - Java:
sun.security.validator.ValidatorException: PKIX path building failed、unable to find valid certification path to requested target - Android:
javax.net.ssl.SSLHandshakeException: Trust anchor for certification path not found - Go:
x509: certificate signed by unknown authority - iOS/Swift:
NSURLErrorDomain error -1202、「server certificate is invalid」 - Ruby/PHP/Node:
SSL_connect returned=1 errno=0 ... certificate verify failed、SELF_SIGNED_CERT_IN_CHAIN、またはcURL error 60
原因不明のまま接続がリセットされる、あるいは明確なAPIエラー本文がないままチャージ作成リクエストがタイムアウトする、といった事象もこの問題の症状である可能性があります。心当たりがある場合、このページの内容がお役に立ちます。
バージョンの確認と修正:3つのステップ
- プロジェクトの依存関係ファイルで、現在使用しているライブラリのバージョンを確認します(確認方法が分からない場合は、このページ末尾のFAQを参照してください)。
- お使いのライブラリの必要な最小バージョンと比較します。
- 現在のバージョンが最小バージョンを下回っている場合は、お使いの言語の更新手順に従って更新し、その後修正内容を確認してください。
修正前に問題を診断する
何かを変更する前に実際の問題を確認したい場合は、ターミナルからサーバーが現在認識している証明書チェーンを調べてください。
openssl s_client -connect api.omise.co:443 -showcerts
出力された証明書チェーンを確認してください。チェーンがシステムに認識されていないルート証明書で終わっている場合、またはハンドシェイク自体が失敗する場合は、証明書の信頼に関する問題であると確認できます(ネットワーク/ファイアウォールによるブロック、DNSの問題、アプリケーション側のバグなどではないということです)。このコマンドは、使用している言語やライブラリに関係なく、TLS接続そのものを直接テストするため、同じように機能します。
ライブラリの必要な最小バージョン
以下の表は、各ライブラリの必要な最小バージョン、リリース日、および完全な変更履歴(changelog)へのリンクを示しています。掲載されているバージョンに達していない場合は、統合に影響が出る前に更新してください。
この表に記載のないライブラリは、影響を受けることが確認されていません。ただし今後のリリースで状況が変わる可能性があるため、このページを定期的にご確認ください。
| 統合方式 | 必要な最小バージョン | リリース日 | Changelog |
|---|---|---|---|
| Android | 3.0.0 | 2019年10月31日 | CHANGELOG.md |
| Go | 1.0.5 | 2020年7月31日 | tags |
| iOS | 3.2.0 | 2019年8月29日 | releases |
| Java | 3.1.1 | 2019年8月6日 | CHANGELOG.md |
| PHP | 3.0.0 | 2025年6月10日 | CHANGELOG.md |
| Python | 0.9.0 | 2020年9月3日 | CHANGELOG.md |
| Ruby | 0.8.0 | 2019年11月4日 | CHANGELOG.md |
| EC-CUBE | 2.2 | 2023年9月5日 | CHANGELOG.md |
| Magento | 2.18.6 | 2021年9月16日 | CHANGELOG.md |
| OpenCart | 2.5 | 2023年9月5日 | CHANGELOG.md |
| PrestaShop | 1.7.10 | 2023年9月5日 | CHANGELOG.md |
| WooCommerce | 4.8 | 2021年4月19日 | CHANGELOG.md |
各ライブラリの更新方法
各セクションでは、基本的な更新例を示しています。実際のビルド環境は異なる場合がありますが、必要な最小バージョン以上にできる方法であればどのような手順でも構いません。
移動先: Android · iOS · Go · Java · PHP · Python · Ruby
SDK: Android
アプリのbuild.gradleファイルでバージョンを更新します:
dependencies {
implementation 'co.omise:omise-android:3.0.0'
}
- TLS 1.1のサポート終了(2.6.5 → 2.6.6): 今後はTLS 1.2以上を使用してください。詳細についてはOmise社内のTLS廃止に関する通知を参照するか、詳細情報が必要でアクセス権がない場合はsupport@omise.coまでお問い合わせください。
SDK: iOS
Swift Package Manager向けのアップグレード手順をご覧ください。4.xブランチではiOS 10およびSwift 4のサポートが終了しています。
モバイルではSDKのバージョンだけが問題ではありません。 AndroidとiOSはいずれも、アプリのSDKバージョンとは別に、デバイス自体のOSレベルのトラストストアを使って証明書を検証します。非常に古いOSバージョンを使用しているデバイスでは、アプリがどのSDKバージョンを採用していても、現在のルート証明書を信頼できない場合があります。この場合、アプリ側で解決する方法はなく、該当ユーザーにデバイスのOSを更新してもらうよう案内する以外に対応策はありません。
ライブラリ: Go
最新バージョンに更新する場合:
go get github.com/omise/omise-go
特定のバージョンに更新する場合:
go get github.com/omise/omise-go@v1.0.5
ライブラリ: Java
アプリのbuild.gradleファイルでバージョンを更新します:
dependencies {
implementation 'co.omise:omise-java:3.1.1'
}
- 後方互換性のある変更のみ(4.x → 最新版): スムーズにアップグレードできるはずです。
- 後方互換性のない変更あり(3.1.1 → 4.0): 移行ガイドを参照してください。まだ最新版に移行できない場合は、少なくとも3.1.1にアップグレードしてください。
ライブラリ: PHP
PHPベースのプラグインをお使いですか? MagentoまたはWooCommerceをお使いの場合は、omise-phpを直接更新するのではなく、PHPベースのプラグインの更新の手順に従ってください。
composer.json内のバージョンを必要な最小バージョン以上に更新し、以下のコマンドを実行します:
composer update omise-php
2.x系の古いバージョンからアップグレードする場合は、更新前にchangelogを確認してください。3.0.0へのアップグレードは複数のリリースをまたぐため、単純な置き換えと考えず、現在お使いのバージョンに応じた変更内容を確認することをおすすめします。可能であればサポートが終了していない(non-EOL)PHPバージョンをご使用ください。
ライブラリ: Python
requirements.txt内のバージョンを必要な最小バージョン以上に更新し、以下のコマンドを実行します:
pip install --upgrade omise
どのバージョンからの更新も、後方互換性のない変更がないためスムーズに行えます。可能であればサポートが終了していない(non-EOL)Pythonバージョンをご使用ください。
ライブラリ: Ruby
Gemfile内のバージョンを必要な最小バージョン以上に更新し、以下のコマンドを実行します:
bundle update omise
どのバージョンからの更新も、後方互換性のない変更がないためスムーズに行えます。可能であればサポートが終了していない(non-EOL)Rubyバージョンをご使用ください。
Omiseのライブラリを使用していない場合
証明書ピンニングの問題は、このページに記載されているライブラリにのみ影響します。一方、DigiCertのルート証明書に関する問題はライブラリに依存せず、TLS接続そのものに影響するため、curlや生のHTTPクライアント、あるいはこのページに記載のない言語・フレームワークからOmiseのAPIを直接呼び出している場合でも影響を受ける可能性があります。
この状況に該当する場合、最小バージョンの表や各ライブラリ向けの手順は関係ありませんが、診断コマンドとこのページ後半で説明するサーバーのルート証明書の更新は引き続き関係します。まずは診断を実行し、実際にこれが該当する問題かどうかを確認してください。
PHPベースのプラグインの更新
omise-phpを手動でダウングレードしましたか? MagentoとWooCommerceはいずれもomise-phpライブラリをベースにしています。どちらかのプラットフォームでこのライブラリを手動でダウングレードした場合は、関連するセキュリティ問題を解消するため、少なくとも推奨される最小バージョンまでアップグレードし直してください。
EC-CUBE
インストールおよび設定の詳細については、EC-CUBEプラグインの公式ドキュメントをご覧ください。
Magento
インストールおよび設定の詳細については、Magentoプラグインの公式ドキュメントをご覧ください。
OpenCart
インストールおよび設定の詳細については、OpenCartプラグインの公式ドキュメントをご覧ください。
PrestaShop
インストールおよび設定の詳細については、PrestaShopプラグインの公式ドキュメントをご覧ください。
WooCommerce
推奨バージョン: パフォーマンス向上のため、WooCommerceは少なくとも5.3.1以上のバージョンをご使用ください。
インストールおよび設定の詳細については、WooCommerceプラグインの公式ドキュメントをご覧ください。
サーバーのルート証明書の更新
ライブラリを最新の状態に更新してもAPIリクエストが失敗し続ける場合、サーバーが信頼するルート証明書が古くなっている可能性があります。OmiseはDigiCert Global Root G2を証明書チェーンのルートとしています。背景情報についてはDigiCertのルート証明書更新に関するアドバイザリをご覧ください。
コンテナやサーバーレス環境で実行していますか? その場合、「サーバーを更新する」という考え方はそのまま当てはまりません。CAバンドルは、自分で直接パッチを当てる永続的なOSからではなく、ベースイメージ(Docker)や、AWS LambdaやGoogle Cloud Functionsなどプロバイダーが管理するランタイムから提供されます。稼働中のコンテナにパッチを当てるのではなく、最新のベースイメージ(例:最新の`debian:`や`alpine:`タグ)からイメージを再ビルドしてください。マネージドなサーバーレス環境については、CA証明書の更新がどのように展開されるか、プロバイダーのドキュメントをご確認ください。通常、この作業をユーザー自身で行うことはできません。
Linuxの場合
LinuxはCA証明書を/etc/ssl/certs/に保存しており、通常のOSアップデートによって自動的に更新されます。手動で更新する場合:
RHELおよびその派生版
/etc/pki/ca-trust/source/anchorsディレクトリがまだ存在しない場合は作成します。- DigiCert Global Root G2証明書をダウンロードします。
- ダウンロードしたPEMファイルを
/etc/pki/ca-trust/source/anchorsにコピーします。 - システムのトラストストアに追加します:
sudo update-ca-trust extract
Debianおよびその派生版
/usr/local/share/ca-certificatesディレクトリがまだ存在しない場合は作成します。- DigiCert Global Root G2証明書をダウンロードします。
- ダウンロードしたPEMファイルを
/usr/local/share/ca-certificatesにコピーし、拡張子を.crtに変更します。 - システムのトラストストアに追加します:
sudo update-ca-certificates
macOSの場合
通常のmacOSアップデートによってルート証明書は自動的に更新されます。手動で証明書を追加する場合は、DigiCert Global Root G2証明書をダウンロードし、Systemキーチェーンに追加してSSL用に信頼するよう設定します。以下のコマンド内のファイル名は、実際にダウンロードしたファイル名に合わせて変更してください:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain path/to/downloaded-certificate.crt
Windowsの場合
通常のOSアップデートによってルート証明書は自動的に更新されます。手動で更新する場合:
ステップ1: コマンドプロンプトを管理者として開きます。
ステップ2: 作業用フォルダ(例:C:\Temp)に移動します。
ステップ3: 以下のコマンドを実行します。このコマンドは、そのフォルダ内にRootstore.sstという名前のファイルとして、最新のルート証明書更新情報をダウンロードします。
CertUtil --generateSSTFromWU Rootstore.sst
ステップ4: 対象のサーバーがインターネットに接続されていない場合は、そのフォルダからRootstore.sstをオフラインのマシンにコピーし、そのマシン上でコマンドを直接実行する代わりに、ファイルをインポートしてください。
修正内容の確認
ライブラリ、サーバーのルート証明書、またはその両方を更新した後は、次に進む前に修正が正しく行われたことを確認してください。
- テストリクエストを送信します。テストモードでのチャージ作成が、最も直接的な確認方法です。これが失敗しやすいリクエストだからです。
- 証明書や接続に関するエラーなく成功すれば、対応は完了です。
- 同じように失敗し続ける場合は、まだ対応していない方の修正を行ってください。ほとんどの場合はライブラリの更新のみで十分ですが、サーバーによってはルート証明書の更新も必要です。
- 両方の対応後も失敗が続く場合は、status.omise.coで大規模な障害が発生していないか確認したうえで、正確なエラーメッセージとともにOmiseサポートまでお問い合わせください。
よくある質問
Q: 現在使用しているライブラリのバージョンはどのように確認できますか?
A: 依存関係マニフェスト(composer.json、requirements.txt、Gemfile、build.gradle、またはgo.mod/Podfileなど、ご利用のパッケージマネージャーに応じたファイル)で、固定されているOmiseライブラリのバージョンを確認するか、使用している言語のパッケージマネージャーでインストール済みパッケージを直接確認してください。
Q: 表に自分のライブラリが記載されていません。影響を受けますか? A: 現時点でOmiseが把握している限りでは影響はありませんが、今後のリリースでリストが変更される可能性があるため、このページを定期的にご確認ください。
Q: ライブラリを更新しましたが、リクエストが失敗し続けます。次に何を確認すべきですか? A: 次に、サーバーが信頼するルート証明書を更新してください。詳しくはサーバーのルート証明書の更新をご覧ください。サーバー側のトラストストアが古いことが、次に多い原因です。
Q: ホスト型チェックアウトやリダイレクト方式のみを使用しており、ライブラリをインストールしていません。何か対応が必要ですか? A: いいえ。この内容は、Omise提供のライブラリまたはプラグインを使用している統合にのみ関係します。
Q: curl、生のHTTPクライアント、またはこのページに記載のない言語からOmiseのAPIを直接呼び出しています。影響を受けますか? A: ライブラリのバージョンに関する問題はOmise自身のライブラリに固有のものであるため、影響を受けません。一方、サーバーのルート証明書に関する問題はTLS接続そのものに関わるため、引き続き影響を受ける可能性があります。詳しくはOmiseのライブラリを使用していない場合をご覧ください。
Q: アプリは最新のOmise SDKを使用していますが、古いスマートフォンを使うユーザーで依然として証明書エラーが発生します。なぜですか? A: AndroidとiOSはいずれも、アプリのSDKバージョンとは別に、デバイス自体のOSレベルのトラストストアを使って証明書を検証します。非常に古いOSバージョンのデバイスでは、どのSDKバージョンを使用していても、現在のルート証明書を信頼できない場合があります。この場合、アプリ側で解決する方法はなく、該当するユーザーにデバイスのOSを更新してもらうよう案内する以外に対応策はありません。
Q: 更新しない場合、実際にどのような問題が起きますか? A: ライブラリがピン留めしている証明書が無効になった時点で、チャージ作成を含むAPIリクエストが警告なく失敗し始める可能性があります。
関連コンテンツ
さらにご質問がありますか?Omiseサポートまでお問い合わせください。