【问题标题】:SSL Error - Alert number 80 - When calling server from clientSSL 错误 - 警报编号 80 - 从客户端调用服务器时
【发布时间】:2022-08-17 04:28:28
【问题描述】:

我是 Web 开发的新手,我开发了我的第一个基本 CRUD 应用程序。它在我当地按预期工作。作为投资组合项目,我想创建一个实际的网站。我购买了域名和 SSL 证书等,部署了我的后端和前端等。但是过去几天我一直在努力解决一个问题。请参阅下面的详细信息

背景信息

  • 服务器:我在 Heroku (example.com) 上有一个 nodejs 应用程序。我为我的域(即 example.com)购买了 ssl 证书。我在 Heroku 中插入了证书和中间证书,并与我的后端链接。
  • 客户端:我在 Vercel (subdomain.example.com) 上部署了我的 React 和 nextjs 前端。 Vercel 正在为 subdomain.example.com 创建自己的证书

我的问题是我在我的网站上收到以下错误。在我等待几分钟并刷新后,错误消失了。如果我一段时间不使用它,错误会再次出现。

[Network] FetchError: request to https://example.com/graphql failed, reason: write EPROTO 139801265354624:error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1544:SSL alert number 80

请参阅下面我的 nodejs 代码

  const conn = await createConnection({
    type: \"postgres\",
    url: process.env.DATABASE_URL,
    host: process.env.PG_HOST,
    username: process.env.PG_USER,
    password: process.env.PG_PASSWORD,
    port: parseInt(process.env.PORT),
    database: process.env.PG_DATABASE,
    logging: true,
    migrations: [path.join(__dirname, \"./migrations/*\")],
    entities: [Bank, User, Report],
    ssl: __prod__ ? {rejectUnauthorized: false} : false
  })
  const redisStore = connectRedis(session);
  const redis = new Redis(process.env.REDIS_URL);
  app.set(\"trust proxy\", 1)
  app.use(cors({
    origin: __prod__ ? process.env.CORS_ORIGIN : \"http://localhost:3000\",
    credentials: true
  }))

  app.use(
    session({
      name: COOKIE_NAME,
      store: new redisStore({
        client: redis,
        disableTouch: true
      }),
      cookie: {
        maxAge: 1000 * 60 * 60 * 24 * 365 * 10, 
        httpOnly: true,
        sameSite: \"none\",
        secure: __prod__,
        domain: __prod__ ? process.env.DOMAIN : undefined
      } as CookieOptions ,
      saveUninitialized: false,
      secret: process.env.SESSION_SECRET,
      resave: false
    })
  )

  const apolloServer = new ApolloServer({
    schema: await buildSchema({
      resolvers: [BankResolver, UserResolver, ReportResolver],
      validate: false
    }),
    context: ({req, res}): MyContext => ({req, res, redis})
  })
  await apolloServer.start()
  apolloServer.applyMiddleware({app, cors: false});
  app.listen(parseInt(process.env.PORT), () => console.log(\"Server listening on port 4000\"));
}

    标签: node.js reactjs ssl heroku vercel


    【解决方案1】:

    @sinan 您是否知道原因以及您的情况如何?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-22
      • 2011-03-18
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2018-06-20
      • 2012-12-07
      • 2012-06-10
      相关资源
      最近更新 更多