AWSコンソールで確認したURIを指定してMongoDB Node.js driver( mongodb 3.0.2
)でDocumentDB(TLS有効)に接続しようとしたところ、 MongoNetworkError: unable to get local issuer certificate
となってしまいました。
事象
DBの接続情報は作成したクラスタの Connectivity & security
で確認しました。
まずは指示通りCA証明書をダウンロードします。
❯ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
続けて、 MongoClient.connect
で上図に記載のURIをそのまま指定しました。
MongoClient.connect('mongodb://<username>:<password>@....docdb.amazonaws.com:27017/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
すると以下のエラーが発生しました。
Failed Mongo connection: failed to connect to server [...] on first connect [MongoNetworkError: unable to get local issuer certificate]
原因
以下のリンク先によると、 ssl
を tls
に、 ssl_ca_certs
を tlsCAFile
にしないと駄目だったようです。
対策
URIを以下の通り書き換えることで接続に成功しました。
MongoClient.connect('mongodb://<username>:<password>@....docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');