把你加入我的服务器信托基金?

2025-07-05 10:30:03 6
  • 收藏
  • 管理

    哪个pem文件让我用ssl验证您的身份?

    Http://mongodb.github.io/node-mongodb-native/2.1/reference/connecting/ssl/#driver-should-validate-server-certificate

    现在,我的Centos 7服务器似乎没有将您列入受信任CA列表

    /etc/pki/ca-Trust/SOURCE/README.md表示:

    目录/etc/pki/ca-Trust/source/包含CA证书和

    PEM文件格式的信任设置。此处找到的信任设置将为

    具有高优先级的解释-高于

    /usr/share/pki/ca-Trust-source/。

    =============================================================================

    快速帮助:将简单PEM或DER文件格式的证书添加到

    系统上受信任的CA列表:

    将其复制到

    /etc/pki/ca-Trust/源/锚点/

    子目录,然后运行

    更新-CA-信任

    指挥部。

    如果您的证书是扩展的Begin Trusted文件格式,

    然后将其放入主的源/目录中。

    =============================================================================

    有关其他信息,请参阅更新-ca-Trust(8)手册页。

    默认情况下,CentOS中应包含IdenTrust根证书。尝试将sslCA指向/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt.

    另一件事:在客户机代码中设置sslKey和sslCert。这些参数用于客户端证书身份验证;它们与验证到服务器的SSL连接无关。您还提到您正在使用MongoDB的用户名和密码。我不熟悉MongoDB,但您通常对客户端使用基于密码的身份验证或基于证书的身份验证,而不是两者兼而有之。您可能还必须在服务器端进行配置才能使其工作(至少在MySQL等应用程序中是这样工作的)。TL;DR:您可能希望在客户端代码中去掉sslKey和sslCert。我不知道这是否有帮助,但是,这是服务器到服务器,而不是客户端到服务器,pfg:

    尝试将sslCA指向/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt

    现在,错误已从

    MongoError:无法获取颁发者证书

    MongoError:无法获取本地颁发者证书,同时MongoDB文档指定:

    司机应验证服务器证书并提供有效证书

    如果将服务器配置为执行证书验证,则需要通过驱动程序传递证书并验证检索到的证书。

    Http://mongodb.github.io/node-mongodb-native/2.1/reference/connecting/ssl/#driver-should-validate-server-certificate-and-present-valid-certificate,Pfg:

    您通常对客户端使用基于密码的身份验证或基于证书的身份验证,而不是两者兼而有之

    需要说明的是,USER:PASSWORD供MongoDB内部使用(与SSLauth无关)。它是由数据库管理员概述的mongo用户。此用户在Site1.com上的My mongod.log中对数据库的一部分具有特定读/写权限

    2016.05-08T14:59:20.747+0200I网络[初始化和侦听]正在等待端口27017上的连接

    48133-05-08T15:07:26.818+0200I网络[初始化和监听]已接受Site2.com:02001(1连接现已开通)

    26.828-05-08T15:07:26.828+0200E网络[连接1]SSL端证书验证失败:证书不受信任

    48133(0个连接现已开通),我猜站点1试图通过openssl验证站点2的pem文件,但我不知道如何在终端测试,所以我尝试验证站点1‘S自己的pem文件以各种组合(用棍子敲打),我可以看到我也得到了

    答:无法获得颁发者证书

    B:无法获取本地颁发者证书

    顺便说一句:我按照mongdb文档的建议连接了文件:

    Cat Prikey.pem cert.pem>/etc/letsENCRYPT/live/site1.com/mongod.pem

    Cat lets-ENCRYPT-x3-cross-signed.pem isrgrootx1.pem>/etc/letsENCRYPT/MON神-LETSENCRYPT.pem

    发生的事情(也许有用):

    [根@面板~]#openssl Verify-Verbose-Cafile/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem/ETC/letsENCRYPT/LIVE/SITE1.com/mongod.pem

    /etc/letsENCRYPT/live/site1.com/mongod.pem:C=US,O=我们加密,CN=我们加密授权机构X3

    %1深度查找时出现错误2:无法获取颁发者证书

    ..。

    [ROOT@panel~]#openssl Verify-Verbose-Cafile/etc/letsENCRYPT/mongoid-letsENCRYPTT.pem/etc/letsENCRYPT/live/site1.com/mongod.pem

    /etc/letsENCRYPT/live/site1.com/mongod.pem:C=US,O=我们加密,CN=我们加密授权机构X3

    %1深度查找时出现错误2:无法获取颁发者证书

    ..。

    [根@面板~]#openssl Verify-Verbose-Cafile/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt/ETC/letsENCRYPT/LIVE/SITE1.com/mongod.pem

    /etc/letsENCRYPT/live/site1.com/mongod.pem:cn=site1.com

    0深度查找时出现错误20:无法获取本地颁发者证书

    ..。

    [根@面板~]#openssl Verify-Verbose-Cafile/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt/ETC/letsENCRYPT/LIVE/Site1.com/fullchain.pem

    /etc/letsencrypt/live/site1.com/fullchain.pem:CN=Site1.com

    0深度查找时出现错误20:无法获取本地颁发者证书

    ..。

    [根@panel~]#openssl Verify-Verbose-Cafile/etc/letscrypt/live/site1.com/mongod.pem/etc/letsENCRYPT/live/site1.com/fullchain.pem

    /etc/letsencrypt/live/site1.com/fullchain.pem:CN=Site1.com

    0深度查找时出现错误20:无法获取本地颁发者证书

    ..。

    [ROOT@panel~]#openssl Verify-Verbose-Cafile/etc/letsENCRYPT/mongoid-letsENCRYPTT.pem/etc/letsENCRYPT/live/site1.com/mongod.pem

    /etc/letsENCRYPT/live/site1.com/mongod.pem:C=US,O=我们加密,CN=我们加密授权机构X3

    错误2在1深度查找:无法获取颁发者证书,我有了一个想法(从逻辑上讲我认为我可以修复它),方法是结合letsEncrypt工作人员早先关于使用fullchain.pem而不是cert.pem的建议,但按照MongoDB的要求将文件连接到Prikey.pem

    也遵循@pfg使用/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt AS-Cafile的建议

    CAT/ETC/letsENCRYPT/LIVE/Site1.com/Prikey.pem/ETC/LIVE/Site1.com/Fullchain.pem>/etc/letsencrypt/live/site1.com/mongodfull.pem

    然后测试openssl再次验证站点1‘S自己的问题

    [根@面板~]#openssl Verify-Verbose-Cafile/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt/etc/letsencrypt/live/site1.com/mongodfull.pem

    /etc/letsencrypt/live/site.com/mongodfull.pem:CN=Site1.com

    0深度查找时出现错误20:无法获取本地颁发者证书,更多尝试使用新的pem文件验证自己的pem

    OPENSSLVerify-Verbose-Cafile/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt/etc/letsencrypt/live/site1.com/mongodfull.pem

    /etc/letsencrypt/live/site1.com/mongodfull.pem:CN=Site1.com

    0深度查找时出现错误20:无法获取本地颁发者证书

    OPENSSLVerify-Verbose-Cafile/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem/etc/letsencrypt/live/site1.com/mongodfull.pem

    /etc/letsencrypt/live/site1.com/mongodfull.pem:C=US,O=我们加密,CN=我们加密授权机构X3

    %1深度查找时出现错误2:无法获取颁发者证书

    OPENSSLVerify-Verbose-Cafile/ETC/let加密/isrgrootx1.pem/etc/letsencrypt/live/site1.com/mongodfull.pem

    /etc/letsencrypt/live/site1.com/mongodfull.pem:CN=Site1.com

    0深度查找时出现错误20:无法获取本地颁发者证书

    OPENSSLVerify-Verbose-Cafile/ETC/letsENCRYPT/MON神-LETS-ENCRYPT.pem/etc/letsencrypt/live/site1.com/mongodfull.pem

    /etc/letsencrypt/live/site1.com/mongodfull.pem:C=US,O=我们加密,CN=我们加密授权机构X3

    %1深度查找时出现错误2:无法获取颁发者证书,需要(‘MongoDB’)。MongoClient.Connect(

    ‘mongodb://benz:xxxx@site1.com:27017/db?ssl=true’

    ,{服务器:{

    SslValify:True

    ,check ServerIdentity:True

    ,sslCA:[require(‘fs’).readFileSync(‘/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt’)]

    ,sslKey:require(‘fs’).readFileSync(‘/etc/letsencrypt/live/site2.com/privkey.pem’)

    ,sslCert:require(‘fs’).readFileSync(‘/etc/letsencrypt/live/site2.com/mongodfull.pem’)

    }}

    ,函数(e,db){

    Console.log(e,db);

    数据库关闭();

    });

    仍然会导致

    MongoError:无法获取本地颁发者证书

    尽管mongofull.pem同时包含这两种内容

    /etc/letsENCRYPT/live/site2.com/Prikey.pem

    /etc/letsENCRYPT/live/site2.com/fullchain.pem

    周氏和尚:和尚/etc/letsencrypt/live/site2.com/mongodfull.pem

    Chmod 600/etc/letsencrypt/live/site2.com/mongodfull.pem,Benzmuircroft:

    我不知道这是否有帮助,但这是服务器到服务器,而不是客户到服务器

    这在TLS中不是一个现有的概念。客户端连接到服务器,即使该客户端本身可能是服务器。

    客户端可以使用客户端证书作为身份验证机制,但这基本上是对基于密码的身份验证的替代,并不是绝对必要的。

    在本指南的基础上,需要通过各个步骤启用客户端证书身份验证,还需要配置每个用户的证书主体。

    我的建议:保持简单-跳过客户端证书,并在使用TLS时尝试使用常规的基于密码的身份验证。这意味着:MongoDB服务器获得一个证书和私钥,而您的客户端至多获得一个CA文件(也可能是ca-bundle.trust.crt)--也就是说,您的客户端代码中没有sslKey或sslCert。

    一旦该方法起作用,并且您决定仍然希望使用客户端证书作为身份验证方法(而不是密码),您应该能够遵循该指南。该指南是不完整的,因为它没有说明如何将验证码集成到连接代码中(如下所示)

    奔驰:XXXX与SSL无关。它位于连接后对数据库的读/写权限的SSL之后

    Required(‘MongoDB’).MongoClient.Connect(

    ‘mongodb://benz:xxxx@site1.com:27017/db?ssl=true’

    ,{服务器:{

    SslValify:True

    ,check ServerIdentity:True

    ,sslCA:[require(‘fs’).readFileSync(‘/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt’)]

    }}

    ,函数(e,db){

    Console.log(e,db);

    数据库关闭();

    });

    仍然会导致

    MongoError:无法获取本地颁发者证书

    为什么我不能成功使用任何OpenSSL验证命令?你能提供你用来在服务器上生成.pem文件的命令--sslPEMKeyFile吗?我现在没有用户

    Required(‘MongoDB’).MongoClient.Connect(

    ‘mongob://site1.com:27017/db?ssl=TRUE’

    ,{服务器:{

    SslValify:True

    ,check ServerIdentity:True

    ,sslCA:[require(‘fs’).readFileSync(‘/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt’)]

    ,sslKey:require(‘fs’).readFileSync(‘/etc/letsencrypt/live/site2.com/privkey.pem’)

    ,sslCert:require(‘fs’).readFileSync(‘/etc/letsencrypt/live/site2.com/mongodfull.pem’)

    }}

    ,函数(e,db){

    Console.log(e,db);

    数据库关闭();

    });

    但即使没有用户,它仍然会导致

    MongoError:无法获取本地颁发者证书,pfg:

    您能提供用于生成服务器上正在使用的.pem文件的命令--sslPEMKeyFile吗?

    CAT/etc/letsencrypt/lets-encrypt-x3-cross-signed.pem/ETC/letsENCRYPT/isrgrootx1.pem>/ETC/letsENCRYPT/mongoid-letsENCRYPT.pem

    引用MongoDB 3.2.x SSLwith LetsENCRYPT·GitHub,那是Chain/CA文件。

    PEMKeyFile可能应该是cat Prikey.pem cert.pem(来自客户端的原始文件)。

    (更长的解释:该指南最初是为X1中间证书编写的,它指向ISRG根证书。当前的中间证书(X3)不指向ISRG根,因此您必须使用IdenTrust(DST X3)根。)

    配置服务器后,您可以使用一些OpenSSL代码来验证服务器是否正在发送中间证书,如下所示:

    Openssl S_客户端-showcerts-连接站点1.com:mongoport

    然后验证输出是否包含以下行:

    1 S:/C=US/O=我们加密/CN=我们加密授权X3

    I:/O=数字签名信任公司/CN=DST Root CA X3,已确认!

    1 S:/C=US/O=我们加密/CN=我们加密授权X3

    I:/O=数字签名信任公司/CN=DST根CA X3

    我也看到了

    可接受的客户端证书CA名称

    /C=US/O=让我们加密/CN=让我们加密Authority X3

    MongoError:无法获取本地颁发者证书

    上一页:把握分寸感聊聊日常设计中的那些过 下一页:把laravel开发中常用cla的整合成一个包,避免每次重复复制粘贴
    全部评论(0)