内容
自前のcouchdbサーバ利用時にSSL通信ができなくなってしまいました。
以前、「自前のcouchdbサーバの利用ができない」という同様の件を報告した際、サポートいただいて利用できるようになりましたが、その後、Syncが過去のある時点で止まっていました。
しばらく1台の端末のみで使っていたため、正確にいつから同期されなくなったのかは不明です。
パケットキャプチャにより確認したところ、SSLハンドシェイクの途中で、inkdropアプリ側から切断しているらしい(FINを送っている)ことが分かりました。
1ヶ月ほど前に、当該サーバで利用しているSSL証明書を更新しているのですが、そのあたりが影響しているのかも知れません。
なお、本サーバはウェブブラウザやcurlでは正常にアクセスできる環境であり、何故inkdropだけがアクセスできないのかは分かりません。
inkdropアプリが何故ハンドシェイクを中止しているのか、原因が分かる方法があれば直接の原因を調べられるのですが、そういったことは可能ですか?
サーバ環境
CouchDB 2.1.0
nginx 1.12.1
SSL復号化はnginxにて行っており、CouchDBは関与していません
証明書は自己署名ではなく、購入したものです(RapidSSL)
状況
nginxのアクセスログには何も出力されていない
couchdbのログには何も出力されていない
HTTPSではなくHTTPを同期URLに指定すると同期できる
indropアプリが動作しているMacから、curlでHTTPSのURLにアクセスすると、正常な応答が返り、nginx/couchdbのログが出力される
inkdropアプリからサーバへの通信は試みられている(パケットキャプチャにより確認)
SSLのハンドシェイクの途中で、inkdropアプリ側から切断している(FINを送っている)
craftzdog
(Takuya Matsuyama)
December 24, 2017, 2:35am
3
こんにちは。それは奇妙ですね。
Inkdrop側で通信方法を変えたりはしていませんので、証明書かその設定の問題である可能性が高いと推測します。Inkdropのデータベースは先日お伝えしたnginxの設定で変わらず運用しています。証明書はLet’s Encryptです。
クライアントの環境はmacOSでしょうか?
であれば、バイナリ Inkdrop.app/Contents/MacOS/Inkdrop
を直接ターミナルから実行してみてください。
何かエラーログが出るかもしれません。
InkdropはElectron製で、Electronのメインプロセスはnode.js (v7.9.0)です。
なので、node.jsで問題を再現出来れば、原因を詳しく調べることができると思います。
CouchDBクライアントモジュールのPouchDBは、通信モジュールに request を使っています。
以下のコードをnode 7.9.0で実行してエラーにならないか確認してみてください。
var request = require('request');
request('サーバのURL', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
詳細な情報、ありがとうございます!
node 7.9.0 の環境で、request を使ったテストを実行してみました。
UNABLE_TO_VERIFY_LEAF_SIGNATURE
でエラーになりました。
やはり証明書チェインの解決ができていないようですね。
KeychainにRoot CAと中間CAの証明書を明示的に登録してもダメなようです。
いただいたテストコードで通る方法を探すか、証明書を他のものにするかを検討しますね。
本件は一旦クローズとしていただければと思います。
有り難うございました。
ちなみに、とりあえずは
NODE_TLS_REJECT_UNAUTHORIZED=0
がexportされている状態で
Inkdrop.app/Contents/MacOS/Inkdrop
を実行してSSL通信するようにしました(HTTPで同期するよりはセキュアなので)。
craftzdog
(Takuya Matsuyama)
December 25, 2017, 4:01am
6
おお、原因が判明して良かったです。
解決を祈っております。
では一旦クローズします。