事象
Windows環境でcURLを実行すると以下の様なエラーが発生する。
C:\Users\hoge>curl https://www.google.com curl: (35) schannel: next InitializeSecurityContext failed: CRYPT_E_NO_REVOCATION_CHECK (0x80092012) 失効の関数は証明書の失効を確認できませんでした。
原因
多分cURL.exeの不具合(作りこみ不足)と思われる。
curl8.9.1まで当エラーが発生していた。
curl8.10以降では同じコマンドを実行しても当エラーは発生しない。
(証明書の失効確認まで行える様になった)
暫定対応方法
オプションに--ssl-no-revokeを付ける。
C:\Users\hoge>curl https://www.google.com <!doctype html><html itemscope=(以下略)
恒久対応方法
Windows版のcurlを別途置き、配置した側を利用するようにする。(※1)
※1
元々配置されているcURLはWindows Updateで書き換えられると思われる。
そのため、それを上書きするのは良くないと思うので。
対応方法
- cURLのWindows版をダウンロードする。
curl for Windows - 適当なフォルダに配置する。(ex. C:\Program Files)
- 環境変数PATHに追加する。(※2)
※2
%SystemRoot%system32 より前に追加しなければならない。
通常cURL.exeはc:\Windows\system32配下に配置されている。
そのため、単純にPATHに追加しただけでは、古いcURLが使われてしまうので。
なお、きちんと設定できているかはwhereコマンドを使えば確認できる。
(配置したcurlが優先順位低い場合は設定見直す必要有)
C:\Users\hoge>where curl C:\Program Files\curl\curl.exe C:\Windows\System32\curl.exe
その他
- Windowsアップデートが制限されている環境下で発生していた事象である。
- 環境変数の設定をするため、コマンドプロンプトは再度立上げする必要がある。
- 当エラーを解決しても、SASEやプロキシ経由の通信で証明書のエラーを解決しないといけない場合がある。 その場合は別途証明書の追加対応を行う必要がある。
- 他のアプリが当cURLを利用していると通信エラーになる場合がある。
私の場合はPower BI Desktopがこれが原因で動かなくて嵌っていた。


