首页 > 解决方案 > Rails API SSL 问题:将 https 与 ReactJS 客户端一起使用时出现“没有合适的密钥共享”

问题描述

我需要使用 https 协议进行开发。我有一个使用 ReactJS 客户端的 Rails API。

客户端

我在我的包 json 中将我的 https 设置在客户端,如下所示:

包.json

{
  "scripts": {
    "start": "HTTPS=true PORT=3001 react-scripts start"
  }
}

然后,我配置了我的 axios 实例:

axiosClient.js

import axios from 'axios';
import https from 'https';
// Those are the same certificates I will later use on server side
import crt from 'path/to/ssl/localhost.crt.pem';
import key from 'path/to/ssl/localhost.key.pem';

const httpsAgent = new https.Agent({
  rejectUnauthorized: false,
  cert: crt,
  key: key
});

const axiosClient = axios.create({
  baseURL: process.env.REACT_APP_BACKEND_URL,
  httpsAgent,
  headers: {
    'Access-Control-Allow-Origin': '*', // Required for CORS support to work
    'Access-Control-Allow-Credentials': true, // Required for cookies, authorization headers with HTTPS
    Accept: 'application/json',
    'Content-Type': 'application/json'
  }
});

export default axiosClient;

服务器端

我从终端生成了自签名证书,然后将其放在ssl我的配置文件夹中的一个文件夹中。

project_folder
  |- config
    |- ssl
      |- localhost.crt
      |- localhost.key

然后,我将以下行添加到我的development.rb文件中:

发展.rb

config.force_ssl = false

我的错误

我搜索并尝试了很多东西,但无法摆脱客户端的以下错误:

net::ERR_CONNECTION_CLOSED

在我的服务器端控制台上:

2019-07-29 12:17:04 +0200: SSL error, peer: 127.0.0.1, peer cert: , #<Puma::MiniSSL::SSLError: OpenSSL error: error:141F7065:SSL routines:final_key_share:no suitable key share - 337604709>

我怎样才能摆脱这个?我在 ReactJS 和 Rails 中使用完全相同的证书。

编辑

这是我在 React 中的环境文件:

.env.development.local

REACT_APP_BACKEND_URL="https://127.0.0.1:3000"

对服务器的调用是使用 https 协议进行的,我在控制台中检查了该协议。

标签: javascriptreactjsssl-certificateaxiosrails-api

解决方案


推荐阅读