Rancher Desktop起動時にupdate-ca-certificatesがエラーになる問題に対応した話

Rancher Desktop起動時にupdate-ca-certificatesがエラーになる問題に対応した話

Factory Resetせずに復旧できました!!
2026.02.24

リテールアプリ共創部@大阪の岩田です。

今日も元気に仕事をすべくMacにログインしたところ、Rancher Desktopが以下のエラーを吐いていました。

Rancher Desktopのエラー

Contextの表示を確認するにupdate-ca-certificates実行中に問題が発生しているようです。恐る恐るdocker psコマンドを叩いてみたところ...

failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory

やはりエラーになってしまいました...

Factory Resetすれば直るという情報はいくつか見つけたのですが、DBダンプの復元など環境再構築が面倒なので、できればFactory Resetは避けたいところです。ということで別の方法で対応できないか格闘してみました。

環境

今回エラーが発生した環境は以下でした。

  • Rancher Desktop: Version 1.22.0
  • OS: MacOS 26.3

結論

rdctl shellでLima VMのシェルに接続し、以下コマンドで証明書を退避させることで復旧できました。

sudo mkdir /usr/local/share/ca-certificates_bk/
sudo mv /usr/local/share/ca-certificates/* /usr/local/share/ca-certificates_bk/

※未検証ですが、k8sを利用しているケースでは後述する対応の方が良さそうです。

この対応実施後にRancher Desktopを起動すると今度は問題なく起動し、Macからdockerコマンドが利用できるようになりました。

正常起動するようになったRancher Desktop

調べたことなど

トラブルシューティングの過程で以下の対応を行いました。

まずはログの確認です。/Users/<ユーザー名>/Library/Logs/rancher-desktop/lima.logを確認すると以下のログが出力されていました。

2026-02-24T06:53:43.360Z: Lima: executing: sudo update-ca-certificates: Error: /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl exited with code 1

2026-02-24T06:53:43.360Z: Error starting lima: l [Error]: /Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl exited with code 1
    at ChildProcess.<anonymous> (file:///Applications/Rancher%20Desktop.app/Contents/Resources/app.asar/dist/app/background.js:2:68266)
    at ChildProcess.emit (node:events:519:28)
    at ChildProcess._handle.onexit (node:internal/child_process:293:12) {
  command: [
    '/Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl',
    'shell',
    '--workdir=.',
    '0',
    'sudo',
    'update-ca-certificates'
  ],
  stdout: '',
  stderr: 'WARNING: Skipping duplicate certificate in file ca-cert-rd-45.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-Go_Daddy_Root_Certificate_Authority_-_G2.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-rd-142.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-SSL.com_Root_Certification_Authority_ECC.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-rd-92.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-rd-83.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-rd-11.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-rd-75.pem\n' +
    'WARNING: Skipping duplicate certificate in file ca-cert-Actalis_Authentication_Root_CA.pem\n' +
...略
    'WARNING: Skipping duplicate certificate in file ca-cert-rd-73.pem\n' +
    'run-parts: /etc/ca-certificates/update.d/certhash: exit status 133\n',
  code: 1,
  signal: undefined,
  [Symbol(child-process.command)]: '/Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl shell --workdir=. 0 sudo update-ca-certificates'
}

sudo update-ca-certificates実行時にエラーになっていることが分かります。

もう少し詳細を調べるためrdctl shellでLima VMのシェルに接続してsudo update-ca-certificatesを実行してみます。すると以下のエラーが出力されました。

/etc/ca-certificates/update.d/certhash: exit status 133

update-ca-certificatesの処理の中で呼び出される/etc/ca-certificates/update.d/certhashでエラーになっているようです。cat /etc/ca-certificates/update.d/certhashでファイルの中身を確認してみます。

#!/bin/sh
exec /usr/bin/c_rehash /etc/ssl/certs

c_rehashを実行するだけのシンプルなシェルスクリプトですね。-vオプションを付与して直接sudo /usr/bin/c_rehash /etc/ssl/certsを実行してみます。するとTrace/breakpoint trapというエラーメッセージが表示されました。

...略
WARNING: Skipping duplicate certificate in file ca-cert-rd-73.pem
Trace/breakpoint trap

やはり何かしらの要因でc_rehashが失敗しているのが原因です。

c_rehashの引数で指定されているディレクトリ/etc/ssl/certsの中身を確認すると、/usr/local/share/ca-certificates/配下の証明書への大量のシンボリックリンクが見つかりました。

抜粋するとこんな感じです。

-rw-r--r--    1 root     root          1684 Sep 30 22:29 mkcert_development_CA_100187536115058541687675466295935187544.crt
-rw-r--r--    1 root     root          1684 Sep  5 09:06 mkcert_development_CA_101631883966628430306009974612274498051.crt
-rw-r--r--    1 root     root          1684 Feb 24 13:56 mkcert_development_CA_10276605326954706212314412316523987352.crt
...略
-rw-------    1 root     root          1869 Feb 24 14:52 rd-0.crt
-rw-------    1 root     root          1134 Feb 24 14:52 rd-1.crt
-rw-------    1 root     root           817 Feb 24 14:52 rd-10.crt
-rw-------    1 root     root          2166 Feb 24 14:52 rd-100.crt
-rw-------    1 root     root          1938 Feb 24 14:52 rd-101.crt
...略

ファイル名がmkcert_development_CA_から始まる証明書と、ファイル名がrd-<連番>.crtの証明書が大量に存在します。なぜこんなに大量の証明書が...

公式ドキュメントには記載が見つけられなかったのですが、GitHubのissueを見る限りこれらの証明書はmkcert_development_CA_から始まる証明書はRancher Desktop内部の通信やk8sで利用しているようです。また、一次情報が見つけられなかったのですが、AIが言うにはrd-<連番>.crtの証明書はMacのキーチェーンアクセス内の証明書をLima VMにコピーしたものだそうです。確かにopensslコマンドでrd-<連番>.crtの証明書を確認したところ、そのようになっていました。

私の環境ではk8sは使っていないので、思い切って証明書を断捨離してみることにしました。

sudo mkdir /usr/local/share/ca-certificates_bk/
sudo mv /usr/local/share/ca-certificates/* /usr/local/share/ca-certificates_bk/

このあとsudo update-ca-certificatesすると無事に正常終了!Rancher Desktopを再起動してもエラー無く起動するようになりました。dockerコマンドも問題なく実行できるようになり、コンテナにも正常にアクセスできました。証明書を断捨離したので何かしら不具合が出ることも懸念していたのですが、特にそんなことはなくこれまで通りコンテナが利用可能でした。無事に開発環境が復旧です。

ちなみにRancher Desktopを再起動すると/usr/local/share/ca-certificates/には再度rd-<連番>.crtの証明書が大量に配置されました。やはりキーチェーンアクセスからLima VMにコピーしているで間違い無さそうです。さらに再起動する度にmkcert_development_CA_...という証明書が増えていました。Rancher Desktopが利用しているlima-config.yamlを見るとmkcert localhostしている箇所があるので、これが原因でしょうか?

https://github.com/rancher-sandbox/rancher-desktop/blob/2f1623b54ee7ffd84d1708cafbbd15293f4c937d/pkg/rancher-desktop/assets/lima-config.yaml#L169C5-L169C21

ということは長い間Rancher Desktopを使い続けていると、またそのうちこのエラーに遭遇するのかもしれません。

GitHubのissueにも記載がありました

無事に復旧できたので「ブログにでもまとめるか〜」と情報をまとめていたところ、GitHubのissueコメントにもワークアラウンドが記載されているのを発見しました。

https://github.com/rancher-sandbox/rancher-desktop/issues/4867#issuecomment-2238846142

c_rehashのオプションに-oldを付けて旧ハッシュ形式のリンクを作成すれば回避できるとのことです。大量の証明書を退避先のディレクトリから復元してエラーの再現を確認、その後この手順を試したところ問題なく復旧できました。

試したけど効果が無かったこと

AIに相談しながらトラブルシューティングしつつ、以下を試してみましたが解消しませんでした。

参考までに紹介しておきます。

opensslコマンドのバージョンアップ

VM内でsudo apk upgrade opensslを実行し、opensslを3.5.4 30までバージョンアップしました。が、sudo /usr/bin/c_rehash /etc/ssl/certsのエラーは解消できませんでした。

シェルスクリプト内で実行するコマンドをopenssl rehashコマンドに書き換え

調査過程でc_rehashは非推奨であり、openssl rehashに置き換えるべきという情報が見つかりました。

https://openssl-library.org/news/secadv/20220503.txt

ということでVM内の/etc/ca-certificates/update.d/certhashを以下のように書き換えてみました。

#!/bin/sh
#exec /usr/bin/c_rehash /etc/ssl/certs
exec openssl rehash /etc/ssl/certs

この後sudo update-ca-certificatesすると以下のようなエラーメッセージが出力されました。

rehash: error: hash table overflow for ca-cert-mkcert_development_CA_84184733099277394971965660736223408932.pem
rehash: error: hash table overflow for ca-cert-mkcert_development_CA_85481008816257889585574659172366595607.pem
rehash: error: hash table overflow for ca-cert-mkcert_development_CA_86440565186658974245327364578293585853.pem
...略
rehash: warning: skipping duplicate certificate in ca-cert-rd-101.pem
rehash: warning: skipping duplicate certificate in ca-cert-rd-102.pem
rehash: warning: skipping duplicate certificate in ca-cert-rd-103.pem
rehash: warning: skipping duplicate certificate in ca-cert-rd-104.pem
rehash: warning: skipping duplicate certificate in ca-cert-rd-105.pem
...略

エラー自体は解消しなかったのですが、hash table overflowというエラーが出ているので、何やらハッシュ値の衝突に起因してそうです。/usr/local/share/ca-certificates/に大量の証明書が存在するのが悪さしているのかもですね。

まとめ

Factory Resetせずに済んで良かったです。

同じエラーに遭遇した方の参考になれば幸いです。

参考

この記事をシェアする

FacebookHatena blogX

関連記事