compose.io에서 SSL을 통해 MongoDB 클러스터에 연결하도록 Rails 4.2.6 앱을 구성하려고합니다. 응용 프로그램은 mongo 2.4.1 및 mongoid 5.1.5 보석을 사용합니다. Compose.io MongoDB 클러스터는 자체 서명 된 SSL 인증서를 사용하므로 compose.io에서 CA 인증서를 다운로드하고 lib/certs/mongo-ca-bundle.pem
에 두었습니다.CA 인증서가있는 Mongo SSL 설정은 레일즈 서버가 아닌 레일스 콘솔에서만 작동합니다.
내 mongoid.yml 파일이 (편집 됨)과 같은 : 나는 rails console
을 실행하고 나는 성공적으로 compose.io 데이터베이스 컬렉션에 대해 쿼리를 실행할 수 있습니다 때
development:
clients:
default:
uri: mongodb://myuser:[email protected]:1111,some-other-host.dblayer.com:2222/mydb?ssl=true
options:
ssl_ca_cert: /path/to/myapp/lib/certs/mongo-ca-bundle.pem
위의 구성은 완벽하게 작동합니다. 내가 mongoid에 대한 디버그 로깅을 사용하도록 설정하면
[..]/mongo/server_selector/selectable.rb:115:in `select_server': No server is available matching preference: #<Mongo::ServerSelector::Primary:0x47167439625640 tag_sets=[] max_staleness=nil> using server_selection_timeout=30 and local_threshold=0.015 (Mongo::Error::NoServerAvailable)
[..]/mongo/cluster.rb:226:in `next_primary'
그것이 문제가 함께 있음을 나타냅니다 : 그러나
, 나는 그것이 30 초 후에 충돌 rails server
를 실행하려고 오류 메시지가 "아니 서버를 사용할 수있다" SSL 핸드 셰이크 : 나는 ssl_ca_cert
구성을 추가 할 때까지
DEBUG -- : MONGODB | Server some-host.dblayer.com:1111 initializing.
DEBUG -- : MONGODB | SSL handshake failed. MongoDB may not be configured with SSL support.
나는 레일 콘솔에서 동일한 오류를 취득 할 경우에 사용합니다. 나는 ssl_verify: false
을 지정하여 서버를 연결할 수 있었지만 유효한 해결 방법은 고려하지 않았습니다. 이 문제를 어떻게 해결할 수 있습니까? 콘솔은 어떻게 작동하지만 서버는 작동하지 않습니까?