5

クラウド (AWS) の Ubuntu 12.10 サーバーで Apache CouchDB インスタンス (バージョン 1.3.0) を実行しています。私は自分のcouchDBインスタンスでSSLを動作させようとしています。

基本的な SSL セットアップは非常に簡単です。証明書とキーをディレクトリに配置し、local.ini ファイルの次の行のコメントを外しました。

httpsd = {couch_httpd, start_link, [https]}
cert_file = /usr/local/etc/couchdb/certs/mycouchdbserver_cert.pem
key_file = /usr/local/etc/couchdb/certs/mycouchdbserver_key.pem

また、これらのファイルの所有権が正しいことも確認しました。

これは問題なく動作し、couchDB サーバーが起動し、問題なくhttps://mycouchdbserver.com/_utils/に移動できます。

openssl を使用したテスト

openssl s_client -showcerts -connect mycouchdbserver.com:443

標準の SSL 構成で正しい結果が得られます

DigiCert の Web サイト (SSL 証明書を購入した会社 - テスト リンク: http://www.digicert.com/help/ ) でセットアップをテストすると、次のエラーが表示されます。

サーバーが必要な中間証明書を送信していません。

SSL 証明書を購入する際、DigiCert から中間証明書を取得し、DigiCert のルート証明書もダウンロードしました。

couchDB の local.ini 構成ファイルでは、これらを次の構成フィールドで使用できます。

verify_ssl_certificates = true
cacert_file = xxxx

私の問題は、これを機能させることができず、これを機能させるために可能なすべての組み合わせを試したことです。これが私が試したことです:

  1. cacert_file を DigiCert からの中間証明書に設定しようとしました
  2. /etc/ssl/certs のルート証明書に cacert_file を設定しようとしました
  3. DigiCert Web サイトからルート証明書を /usr/shared/ca-certs/ に追加してから、dpkg-reconfigure ca-certificates を実行して新しいルート証明書をインストールし、cacert_file を /etc/ssl/certs の新しい pem エンコード証明書に設定しようとしました
  4. cert_fileに使用される1つのファイルに証明書と中間証明書を組み合わせてみました
  5. 証明書、中間証明書、およびルート証明書を cert_file に使用される 1 つの pem ファイルに結合しようとしました

上記のすべてで、couchDB ログにエラーがスローされます。エラーログに大量の出力を与えるものもありますが、番号3を使用すると、

=ERROR REPORT==== 11-Jun-2013::11:35:30 ===
SSL: hello: ssl_handshake.erl:252:Fatal error: internal error

そしてopensslでテストする

CONNECTED(00000003)
16871:error:14094438:SSL routines:SSL3_READ_BYTES:tlsv1 alert internal    error:s3_pkt.c:1099:SSL alert number 80
16871:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:

誰かがverify_ssl_certificates、ルート証明書、および中間証明書をcouchDBで正しく使用する方法について何か考えを持っていますか?

すべてのドキュメントをオンラインで読みましたが、何も役に立ちませんでした

よろしくお願いします アンドリュー

4

3 に答える 3

4

興味のある人は、これが最終的に問題を解決した方法です。

中間証明書でcouchDBを適切に動作させることができなかったようです.

私たちはAWS EC2インスタンスでcouchDBサーバーを実行しているので、ELB (Elastic Load Balancer) インスタンスを作成し、証明書をELBにアップロードし、ロードバランサーの下にEC2インスタンスを追加し、DNSをロードバランサーに再ルーティングしました(ここでも Route53 を使用します)。

次に、couchDB で SSL を完全にオフにし、中間証明書の使用をサポートするロード バランサーに SSL ハンドシェイクを渡しました。

これは、ELB とcouchDB の間の通信が安全でないことを意味しますが、私たちにとっては問題ありません。

これはまた、スケーラビリティのためにELBの下にcouchDBサーバーを追加できるようになったことを意味し、2羽1石のソリューションです.

これと同じソリューションを Nginx でも実行できますが、ELB の追加と管理は簡単で安定しているため、ELB ソリューションを使用しました。

于 2013-06-14T07:33:19.783 に答える