クラウド (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
私の問題は、これを機能させることができず、これを機能させるために可能なすべての組み合わせを試したことです。これが私が試したことです:
- cacert_file を DigiCert からの中間証明書に設定しようとしました
- /etc/ssl/certs のルート証明書に cacert_file を設定しようとしました
- DigiCert Web サイトからルート証明書を /usr/shared/ca-certs/ に追加してから、dpkg-reconfigure ca-certificates を実行して新しいルート証明書をインストールし、cacert_file を /etc/ssl/certs の新しい pem エンコード証明書に設定しようとしました
- cert_fileに使用される1つのファイルに証明書と中間証明書を組み合わせてみました
- 証明書、中間証明書、およびルート証明書を 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で正しく使用する方法について何か考えを持っていますか?
すべてのドキュメントをオンラインで読みましたが、何も役に立ちませんでした
よろしくお願いします アンドリュー