Bitbucket Data Center の「PKIX path building failed」と「SSL certificate problem: unable to get local issuer certificate」
どちらも同じことを言っています:Bitbucket のサーバーが送ってきた証明書を、そのプログラムが信頼していません。たいていは会社の自前の認証局が署名した証明書か、自己署名の証明書です。IDE と Git は、ブラウザーとは別に、信頼する証明書の一覧をそれぞれ持っています。ブラウザーで警告なしに Bitbucket が開けても、ほかの2つのことは分かりません。文句を言うプログラムごとに直します。
答えの全体
2026年10月30日に Windows で、同じパソコンに小さな HTTPS のサーバーを立てて確かめました。1回目は試験用の認証局が署名した証明書、2回目は自己署名の証明書です。今の JetBrains IDE が動く Java 21 は、どちらにもこう言いました:
javax.net.ssl.SSLHandshakeException: (certificate_unknown) PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Git for Windows 2.53 はこうでした:
fatal: unable to access 'https://localhost:8443/scm/proj/repo.git/': SSL certificate OpenSSL verify result: unable to get local issuer certificate (20)
- 自己署名の証明書には
SSL certificate OpenSSL verify result: self-signed certificate (18)。古い Git は同じことをSSL certificate problem: unable to get local issuer certificateと出します。Atlassian の記事やほとんどの報告に出ているのはこちらの形です。 - OpenSSL でなく Windows の TLS(Secure Channel)を使うと、Git はどちらにも
schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)と言いました。 - Java に試験用の認証局を信頼させると、それが署名したサーバーは 200 を返し、自己署名の方は失敗のままでした。認証局を信頼しても、その認証局が署名していない証明書は通りません。
- 信頼した証明書でも、別の名前で開くと失敗します。Java は
No subject alternative names matching IP address 127.0.0.1 foundかNo subject alternative DNS name matching … found.、Git はSSL: no alternative certificate subject name matches target hostname '…'。サーバーは、証明書にあるとおりの名前で開きます。
IDE に信頼させる
管理者から、会社の認証局のルート証明書(.crt・.cer・.pem のファイル)をもらいます。自己署名なら、サーバーの証明書そのものです。それを次の画面の + で足します:
- 2025.2 以降:Settings › Appearance & Behavior › System Settings › Server Certificates
- 2024.1〜2025.1:Settings › Tools › Server Certificates
(JetBrains の Server Certificates のヘルプと、版ごとの同じページ。)IDE はこれを設定のフォルダーの ssl/cacerts に置き、効くのは IDE だけです。信頼していない証明書に出会うと、IDE は Untrusted Server's Certificate を出し、受け入れると同じ一覧に入ります。Accept non-trusted certificates automatically は切ったままにします。どんな証明書でも受け入れてしまいます。
Git に信頼させる
IDE の中の fetch・pull・push は、あなたのコマンドラインの Git が動かしていて、証明書も Git が自分で確かめます。まず、Git がどの TLS を使っているかを見ます:git config --show-origin --get http.sslBackend。試したパソコンでは schannel で、Git for Windows のインストーラーが C:/Program Files/Git/etc/gitconfig に書いていました。
- OpenSSL:証明書のファイルを Bitbucket のサーバーにだけ渡します:
git config --global http.https://bitbucket.example.com/.sslCAInfo C:/certs/company-root.pem。試験では、これでサーバーが通り、github.com もそのまま使えました。住所を付けないhttp.sslCAInfoは、Git の認証局の一覧を丸ごと置き換えます。github.com がunable to get local issuer certificate (20)で失敗しました。 - Secure Channel:Git は Windows が信頼するものを信頼します。IT が Windows に入れた会社の認証局は、たいていもう入っています。自己署名のサーバーの証明書は、Windows を管理している人が足す必要があります。Secure Channel は、
http.schannelUseSSLCAInfoがtrueでないとhttp.sslCAInfoを無視します。両方を付けると、試験のサーバーは通りました。 http.sslVerify falseは使いません。そのホストの確認を止めてしまい、Atlassian も原因を探す間の一時的な手としてだけ挙げています。
サーバーの側のとき
誰の Git もサーバーを信頼しないなら、サーバーが送っているものを見ます。Atlassian の記事 「SSL certificate problem: unable to get local issuer certificate」によると、Bitbucket 自身が HTTPS を受けている(前にプロキシを置かず、SSL のコネクターを使う)なら、その Java のキーストアに、サーバーの証明書だけでなく中間とルートの証明書まで、つながり全体が入っている必要があります。
IntelliJ IDEA で Bitbucket のプルリクエストを
Pull Request Inbox for Bitbucket は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。自分のレビューを待っているプルリクエストを IDE のツールウィンドウに並べます。Bitbucket Cloud と、ベータ版として Bitbucket Data Center 8.9 以降に対応し、Data Center には個人の HTTP アクセス トークンで、そのサーバーにだけ送ります。通信は IDE 自身の HTTP の接続を通るので、IDE の証明書の一覧と確認の画面、プロキシの設定がそのまま効きます。REST API で話し、Git は通らないので、Git がサーバーを信頼していなくても一覧は止まりません。ただ、あなたの fetch や push には Git の側の信頼も要ります。レビューの受信箱・差分・議論は無料。承認・コメント・マージは Pro(月 US$1.50・30日の無料試用つき)。
Bitbucket と Atlassian は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:Data Center の「You are not permitted to access this resource」 · 「Permission denied (publickey)」 · Bitbucket Data Center のサポート終了 · English