Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SSL设置MongoDB时遇到问题_Mongodb_Ssl - Fatal编程技术网

使用SSL设置MongoDB时遇到问题

使用SSL设置MongoDB时遇到问题,mongodb,ssl,Mongodb,Ssl,编辑:当我从一台机器上连接远程设备时,我已经让它工作了,但由于某些原因,当试图通过本地主机连接时,它不工作 我正在尝试使用SSL设置MongoDB。当我输入一个IP地址时,它告诉我请求被拒绝,因为名称与证书不匹配。当我键入正确的机器名时,会出现以下错误: SSL隧道故障:网络无法访问或SSL连接被拒绝 通过服务器 有没有办法进一步解决这个问题?我感到惊讶的是,服务器上的SSL是在客户端验证的 我试过换港口,但运气不太好 Windows环境。MongoDB 3.4.4 我已经使用localhost

编辑:当我从一台机器上连接远程设备时,我已经让它工作了,但由于某些原因,当试图通过本地主机连接时,它不工作

我正在尝试使用SSL设置MongoDB。当我输入一个IP地址时,它告诉我请求被拒绝,因为名称与证书不匹配。当我键入正确的机器名时,会出现以下错误:

SSL隧道故障:网络无法访问或SSL连接被拒绝 通过服务器

有没有办法进一步解决这个问题?我感到惊讶的是,服务器上的SSL是在客户端验证的

我试过换港口,但运气不太好

Windows环境。MongoDB 3.4.4

我已经使用localhost和自签名证书实现了这一点

windows防火墙已关闭

以下是我的设置:

security:
    authorization: "enabled"
systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
net:
    bindIp: 0.0.0.0
    port: 443
    ssl:
       mode: requireSSL
       PEMKeyFile: c:\Cert\pemkeyfile.pem
       PEMKeyPassword: password
       CAFile: c:\Cert\cafile.pem
       allowInvalidHostnames: true
       allowConnectionsWithoutCertificates: true
       allowInvalidCertificates: true
这是mongo日志

2018-07-26T15:13:01.878-0700 I CONTROL  [main] Trying to start Windows service 'MongoDB'
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] MongoDB starting : pid=3900 port=443 dbpath=c:\data\db 64-bit host=CACALDDGNLP001
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] db version v3.4.4
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] git version: 888390515874a9debd1b6c5d36559ca86b44babd
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1u-fips  22 Sep 2016
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] modules: none
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] build environment:
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten]     distarch: x86_64
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten]     target_arch: x86_64
2018-07-26T15:13:01.880-0700 I CONTROL  [initandlisten] options: { config: "C:\Program Files\MongoDB\Server\3.4\mongod.cfg", net: { bindIp: "0.0.0.0", port: 443, ssl: { CAFile: "c:\Cert\cafile.pem", PEMKeyFile: "c:\Cert\pemkeyfile.pem", PEMKeyPassword: "<password>", allowConnectionsWithoutCertificates: true, allowInvalidCertificates: true, allowInvalidHostnames: true, mode: "requireSSL" } }, security: { authorization: "enabled" }, service: true, storage: { dbPath: "c:\data\db" }, systemLog: { destination: "file", path: "c:\data\log\mongod.log" } }
2018-07-26T15:13:01.883-0700 I -        [initandlisten] Detected data files in c:\data\db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-07-26T15:13:01.884-0700 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1535M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2018-07-26T15:13:02.487-0700 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory 'c:/data/db/diagnostic.data'
2018-07-26T15:13:02.488-0700 I NETWORK  [thread1] waiting for connections on port 443 ssl
2018-07-26T15:13:02.488-0700 I STORAGE  [initandlisten] Service running
2018-07-26T15:13:01.878-0700 I CONTROL[main]正在尝试启动Windows服务“MongoDB”
2018-07-26T15:13:01.880-0700 I控制[initandlisten]MongoDB启动:pid=3900端口=443 dbpath=c:\data\db 64位主机=CACALDDGNLP001
2018-07-26T15:13:01.880-0700 I CONTROL[initandlisten]targetMinOS:Windows 7/Windows Server 2008 R2
2018-07-26T15:13:01.880-0700 I控制[initandlisten]db版本v3.4.4
2018-07-26T15:13:01.880-0700 I CONTROL[initandlisten]git版本:888390515874a9debd1b6c5d36559ca86b44babd
2018-07-26T15:13:01.880-0700 I控制[initandlisten]OpenSSL版本:OpenSSL 1.0.1u-fips 2016年9月22日
2018-07-26T15:13:01.880-0700 I控制[initandlisten]分配器:tcmalloc
2018-07-26T15:13:01.880-0700 I控制[initandlisten]模块:无
2018-07-26T15:13:01.880-0700 I控制[initandlisten]构建环境:
2018-07-26T15:13:01.880-0700 I CONTROL[initandlisten]distmod:2008plus ssl
2018-07-26T15:13:01.880-0700 I CONTROL[initandlisten]distarch:x86_64
2018-07-26T15:13:01.880-0700 I控制[initandlisten]目标:x86
2018-07-26T15:13:01.880-0700 I CONTROL[initandlisten]选项:{config:“C:\Program Files\MongoDB\Server\3.4\mongod.cfg”,net:{bindIp:“0.0.0.0”,端口:443,ssl:{CAFile:“C:\Cert\CAFile.pem”,PEMKeyFile:“C:\Cert\PEMKeyFile.pem”,PEMKeyPassword:“,allowConnectionsWithoutCertificates:true,allowInvalidCertificates:true,allowInvalidHostnames:true,模式:“requireSSL”},安全性:{authorization:“enabled”},服务:true,存储:{dbPath:“c:\data\db”},系统日志:{destination:“file”,路径:“c:\data\log\mongod.log”}
2018-07-26T15:13:01.883-0700 I-[initandlisten]检测到由“wiredTiger”存储引擎创建的c:\data\db中的数据文件,因此将活动存储引擎设置为“wiredTiger”。
2018-07-26T15:13:01.884-0700 I STORAGE[initandlisten]wiredtiger\u open config:create,cache\u size=1535M,session\u max=20000,execution=(threads\u min=4,threads\u max=4),config\u base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file\u manager=(close\u idle\u time=100000),checkpoint=(close\u idle=60,log\u size=2GB),statistics\u日志=(等待=0),
2018-07-26T15:13:02.487-0700 I FTDC[initandlisten]正在使用目录“c:/data/db/diagnostic.data”初始化全职诊断数据捕获
2018-07-26T15:13:02.488-0700 I网络[thread1]正在端口443 ssl上等待连接
2018-07-26T15:13:02.488-0700 I存储[initandlisten]服务正在运行

c:\data\log\mongod.log上的日志显示了什么?在MongoDB中,
requireSSL
中的默认值意味着SSL身份在客户端和服务器中都经过验证。服务器还需要知道客户端是他们所说的那个人,这与不需要验证客户端的普通web浏览器SSL不同。Addi问题:1)SSL证书(客户端和服务器)中定义的主机名是什么?2) 在连接失败的
mongo
shell中使用的命令行选项是什么?3) 我建议您不要使用端口443,因为它被称为
https
端口。我将allowConnectionsWithoutCertificates设置为true,它现在可以连接了。由于某种原因,它唯一不连接的地方是在本地计算机上。远程连接可以工作。我正在使用Robomongo连接,它是一个GUI。证书中的主机名与服务器名和完全限定域名相同。将其设置为443是那些绝望的故障排除步骤之一。它适用于27017。从本地主机连接仍然是一个问题吗?我不熟悉RoboMongo,但我认为使用
allowConnectionsWithoutCertificates:true
连接的原因是RoboMongo没有/不能提供客户端的SSL证书。SSL对主机名非常挑剔。客户端证书的
CN
必须与客户端的主机名匹配,服务器证书的
CN
必须与服务器的主机名匹配。通过将
-sslPEMKeyFile
设置为在
mongod
mongo
shell中相同,您可以在客户端和服务器中使用相同的证书。从相同的服务器连接仍然是一个问题。我实际上并没有在地址中使用localhost。我正在为服务器使用FQDN,该服务器应与证书匹配。但由于某些原因,它不起作用。