LoginSignup
3
3

More than 5 years have passed since last update.

SSL化したサイトにAPIリクエストをなげても証明書エラー

Posted at

発生したケース

クライアントから「さくらクラウドで動作していたサービスがウィルスに感染してOSをクリーンインストールされてしまうので助けてくれ」と依頼がきた。
調査が手間だったのとサービス自体も小さかったのでOS〜アプリケーションまでフルフルで新サーバーへ新規インストールすることにした。CakePHPで動いてるアプリケーションで証明書がLetsEncryptで動作している程度簡単な作業と思っていた。

問題発生

1日かけてデータ移行も終わり、サイトでの動作確認も終わったが20時のタイミングで先方のエンジニアからAPIを叩いてもレスポンスが返ってこないと。

症状

  • ブラウザからの証明書は正しく動作してるように見える。
  • NodeアプリケーションからのAPI通信は通らない
  • PostmanやWEB検証ツールからのAPI通信は通らない
  • Postmanの証明書認証をオフにすると動作する。

image.png

検証したこと

  • ローカル完了のキャッシュ削除(ダメ)
  • http通信(通るが解決にはならない)
  • 中間証明書の検証
$ openssl version
OpenSSL 1.0.2o  27 Mar 2018
openssl s_client  -connect example.com:443 < /dev/null | grep "Certificate chain" -A 10
~~~省略~~~
verify error:num=21:unable to verify the first certificate
verify return:1
DONE
Certificate chain
 0 s:/C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=tk2-251-35269.vs.sakura.ne.jp/emailAddress=root@tk2-251-35269.vs.sakura.ne.jp
   i:/C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=tk2-251-35269.vs.sakura.ne.jp/emailAddress=root@tk2-251-35269.vs.sakura.ne.jp
---

証明書の検証に失敗していた。

Apacheの設定を再確認

<VirtualHost *:443>
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA

  SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
  # ↓この設定が抜けていた
  # SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem

  # ~~以下略~~~
</VirtualHost>

確かにSSLCertificateChainFile(中間証明書)の設定が抜けていた。
これで怒られていたわけか

修正するとAPI通信も通り、無事移行作業も完了できました。
最近はLetsの証明書も簡単に取得できるようになっているが、やっぱりなんとなく動いてる状態怖いな。。。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3