reactjs SSL错误-警报编号80 -从客户端调用服务器时

nbysray5  于 2023-03-08  发布在  React
关注(0)|答案(1)|浏览(474)

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

背景信息

  • 服务器:我在Heroku(www.example.com)上有一个nodejs应用程序example.com。我为我的域(iidoe.example.com)购买了一个ssl证书。我在Heroku中插入了证书和中间证书,并与我的后端链接。
  • 客户端:我在Vercel(www.example.com)上部署了我的React & nextjs前端subdomain.example.com。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"));
}
gpfsuwkq

gpfsuwkq1#

我在不同的上下文中遇到了“alert number 80”(Nagios check_http,启用SNI会有所帮助)。无论如何,“alert number 80”表示“internal_error”(参见RFC 5246第7.2节)。
与对等体或协议正确性无关的内部错误(如内存分配失败)使其无法继续。此消息总是致命的。
升级Node.js或它用来实现SSL的任何东西可能会有所帮助。

相关问题