えむにわリソース

ITのスキマ的なあれこれを書きます。

Azure Web Apps のPHPでSecureなAPIにアクセスするときの設定

OAuth2や外部のRestAPIが普及してきたことで、curlを使ってSSLを叩く機会が増えてきました。
しかしながら、Azureを含むWindowsプラットフォームで、設定無しにsslサイトにcurlすると、

cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

とか言われて怒られます。

f:id:m2wasabi:20161005144711j:plain

適切なCA証明書の場所をPHPに教えてやればいいのですが、
ググっても、証明書の検証を無効化するとかは論外として、
自分で証明書入れたり*1、Gitの証明書を流用すればいいろ書いてあるものの、結果そこには何もありませんでした事案*2ばかりだったので、
現在の構成で正しい場所を共有します。*3


"D:\Program Files (x86)\Git\etc\pki\ca-trust\extracted\openssl\ca-bundle.trust.crt"

以下のファイルを wwwroot 以下にデプロイしてやれば、sslcurlがばっちり使えます。

.user.ini


それでは、良いAPIライフを。

*1:https://blogs.msdn.microsoft.com/tsmatsuz/2014/12/12/azure-web-site-curl-ssl-https/ blogs.msdn.microsoft.com

*2:azure.microsoft.com

*3:WebAppsの中を探索しまくれば一応見つかりますが、無駄な労力です