热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB通过SSL连接:我做错了什么?

如何解决《MongoDB通过SSL连接:我做错了什么?》经验,谁能帮忙解答一下?

概述:我有一个运行PHP 7的应用服务器,使用MongoDB PHP用户区库连接到运行MongoDB 3.6.x的单独数据库服务器.我有防火墙规则阻止从本地和私有接口以外的所有来源访问MongoDB服务器(即禁止公共IP访问).

通过PHP连接看起来像这样:

$context_information = array(
    "ssl" => array(
        "allow_self_signed" => false,
        "verify_peer"       => true,
        "verify_peer_name"  => true,
        "verify_expiry"     => true,
        "cafile"            => "/path/to/ca_bundle"
));

$cOntext= stream_context_create($context_information);
$cOnnection= new MongoDB\Client(
    $host,
    array('ssl'=>true),
    array('context'=> $context)
);

我的MongoDB配置看起来像这样:

net:
  port: 27017
  bindIp: 127.0.0.1,10.138.196.241
  ssl:
    mode: requireSSL
    PEMKeyFile: /path/to/my_ca_signed_cert
    CAFile: /path/to/my_ca_bundle

my_ca_signed_cert.pem使用我的openssl生成的RSA私钥生成的.crt文件,以及CA提供的文件,以MongoDB手册中描述的方式生成,例如cat mongodb.key mongodb.crt > mongodb.pem.my_ca_bundle.ca-bundle由CA提供给我的.

此外,ca_bundlePHP上下文中描述的.ca-bundle文件与MongoDB配置中的文件相同.

问题:我继续收到以下错误:

[23-Jul-2018 16:33:33 America/Los_Angeles] PHP致命错误:未捕获MongoDB\Driver\Exception\ConnectionTimeoutException:找不到合适的服务器(serverSelectionTryOnce设置):[TLS握手失败:错误:14090086:SSL例程:ssl3_get_server_certificate:证书验证失败,调用ismaster...

即使我注释掉CAFileMongoDB配置的行,这个问题仍然存在.另外值得注意的是,当设置allow_self_signedtrueif CAFile被注释掉时,我可以成功连接,但是当它被取消注释时不能连接.

最后,当尝试通过MongoDB shell进行连接时,我收到以下错误:

2018-07-23T23:37:02.992 + 0000 E NETWORK [thread1] SSL对等证书验证失败:无法获得颁发者证书

2018-07-23T23:37:02.992 + 0000 E QUERY [thread1]错误:SSL对等证书验证的套接字异常[CONNECT_ERROR]失败:无法获得颁发者证书:

connect@src/mongo/shell/mongo.js:251:13

@(连接):1:6

异常:连接失败

预期行为:我不想使用客户端证书身份验证来连接到数据库.我目前想要的只是加密流量.这意味着能够在不允许自签名证书的情况下连接到数据库.

笔记:

    我在应用程序服务器上成功设置了证书以进行HTTPS连接.此外,在测试此问题中引用的证书时,我已经成功运行了对文件的验证openssl verify -CAfile /path/to/my_ca_bundle /path/to/my_ca_signed_cert.

    当禁用SSL或启用自签名证书时,我的应用程序代码中的所有内容都有效.

关于所有这些的文档在许多方面都非常模糊,所以我不确定我的配置出错了.我应该考虑什么来解决这个问题?


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 数据库锁的分类和应用
    本文介绍了数据库锁的分类和应用,包括并发控制中的读-读、写-写、读-写/写-读操作的问题,以及不同的锁类型和粒度分类。同时还介绍了死锁的产生和避免方法,并详细解释了MVCC的原理以及如何解决幻读的问题。最后,给出了一些使用数据库锁的实际场景和建议。 ... [详细]
  • 1、etcnginxconf.ddefault.conf,添加如下信息:location{try_files$uri$urirouter;rootho ... [详细]
  • 根据自己的PHP版本号选出对应的laravel版本Laravel5.1PHP对应的版本5.5.9Laravel5.2PHP对应的版本5.5.9Laravel5.3PHP对应 ... [详细]
author-avatar
王孟儒062
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有