当前位置: 首页 > 知识库问答 >
问题:

Neo4j服务器证书不受信任

林祯
2023-03-14

我刚刚在Google Cloud上的VM上设置了我的Neo4j服务器,我使用的是企业版4.1.1,并且我已经完成了David Allen关于如何使用LetsEncrypt获得证书的精彩帖子(在这里)。

这一切都工作得很好,我现在有了一个完全安全的Neo4j服务器,我可以通过浏览器(mydomain.com:7473/browser)使用我的主机名访问它。但是,我现在在让我的应用程序使用javascript驱动程序连接到服务器时遇到了问题。

我不断得到以下错误:

连接到服务器失败。请确保您的数据库正在正确的主机和端口上侦听,并且在Neo4j服务器和驱动程序上都有兼容的加密设置。注意,默认的加密设置在Neo4J4.0中发生了变化。原因:服务器证书不受信任。如果信任要连接到的数据库,请使用TRUST_CUSTOM_CA_SIGNED_CERTIFICATES,并使用neo4j.driver将签名证书或服务器证书添加到此驱动程序信任的证书列表中(.,{trustedcertificates:['path/to/certificate.crt']})。这是一种防止中间人攻击的安全措施。如果您只是尝试Neo4j,并不关心加密,只需在驱动程序选项中使用encrypted=“encryption_off”禁用它。套接字响应为:ERR_TLS_CERT_ALTNAME_INVALID

我已经阅读了驱动程序文档(此处),并添加了trust:“trust_custom_ca_signed_certifications”trustedcertifications:[]设置。我从服务器上下载了所有证书(cert.pem、chain.pem、fullchain.pem和privacy.pem),并在trustedCertificates设置中链接到它们。

// This module can be used to serve the GraphQL endpoint
// as a lambda function

const { ApolloServer } = require('apollo-server-lambda')
const { makeAugmentedSchema } = require('neo4j-graphql-js')
const neo4j = require('neo4j-driver')

// This module is copied during the build step
// Be sure to run `npm run build`
const { typeDefs } = require('./graphql-schema')

const driver = neo4j.driver(
  process.env.NEO4J_URI,
  neo4j.auth.basic(
    process.env.NEO4J_USER,
    process.env.NEO4J_PASSWORD 
  ),
  {
    encrypted: process.env.NEO4J_ENCRYPTED ? 'ENCRYPTION_ON' : 'ENCRYPTION_OFF',
    trust: "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES",
    trustedCertificates: ['../../certificates/cert.pem', '../../certificates/chain.pem', '../../certificates/fullchain.pem', '../../certificates/privkey.pem'],
    logging: {
      level: 'debug',
      logger: (level, message) => console.log(level + ' ' + message)
    },
  }
)

const server = new ApolloServer({
  schema: makeAugmentedSchema({ typeDefs }),
  context: { driver, neo4jDatabase: process.env.NEO4J_DATABASE },
  introspection: true,
  playground: true,
})

exports.handler = server.createHandler()

我使用的是最新版本的驱动程序V2.14.4,并启用了完整的日志记录,但我没有得到比上面更多的信息。我就是想不出我做错了什么--有人有什么想法吗?

共有1个答案

郏扬
2023-03-14

我找到了这个问题的解决方案--我查看了文档(此处),发现需要将我的neo4j_URIbolt://so.me.ip.address:7687更新到neo4j://mydomain.com:7687。现在我做了这一切都按预期进行。

 类似资料:
  • 问题内容: 我的问题: 我想连接到可能使用Java默认情况下不信任的证书的服务器(不限于HTTPS协议-可以是LDAP-over- SSL,可以是SMTPS,可以是IMAPS等)。自签名)。 所需的工作流程是尝试连接,检索证书信息,将其提供给用户,如果他接受了,则将其添加到信任库中,以便将来继续受信任。 我被困于获取证书。我有从这里以及关于Java SSL问题的答案所指向的站点编写的代码(请参阅文

  • 我正在创建一个简单的网站。前端存储在S3中,由CloudFront托管。我使用AWS证书管理器向前端域(www.xyz.com)添加了一个受信任的SSL证书。 后端运行在EC2实例上。我向它添加了一个自签名证书。我可以使用Postman访问API,但由于自签名证书,来自前端的请求失败了。 我再次检查了AWS证书管理器是否可以为我的后端服务器提供证书,但它需要一个域。我的服务器运行在IP和端口上,我

  • 我有一个neo4j嵌入应用程序与Spring启动实现。 我需要可视化我的图形并执行一些密码查询。 对我来说,完美的解决方案是在不启动neo4j服务器的情况下在某处部署webadmin界面,并将webadmin链接到我的数据文件夹。 这有可能吗? 提前谢谢。当做

  • 为此,我使用以下命令将。cer文件导入到jks文件中。(密码和密码一样,提示要求接受证书,我给y,然后说证书加到keystore了) keytool-importcert-file xyz.cer-keystore test.jks-alias“testsp” 然后我使用这个jks文件创建凭据,如下所示。 谁能指导我解决这个问题吗?

  • 主要内容:Maven依赖关系,HTTP获取服务器证书示例以下教程演示了如何使用Apache HttpClient 4.5从资源服务器获取证书。 证书用于通过使用SSL / TLS的HTTPS保护客户端和服务器之间的连接。 当您需要有关证书的详细信息时,例如:证书何时到期?谁颁发证书?等等。或者在某些情况下需要读取服务器证书。 在下面的例子中,我们将详细解释如何实现。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache 版本。 将以

  • 我浏览了互联网,还没有找到一个解决方案或方法来验证证书时,通过HTTPS连接使用TIDWTTP。 我已经连接了一个idsslohandlersocketopenssl组件作为IOHandler,设置SSLModes,等等https://s3.amazonaws.com它无法验证证书。 OpenSSL(Indy)提供 “连接SSL时出错。SSL3\u获取\u服务器\u证书:证书验证失败” OpenS