호스트: localhost.증명서의 alt name에 없습니다.
서버측 렌더링중에 다음의 에러가 발생.
RENDERING ERROR: { [Error: Network error: request to https://api-dev.xyz.io/graphql failed, reason: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's altnames: DNS:*.xyz.io"]
graphQLErrors: null,
networkError:
{ [FetchError: request to https://api-dev.xyz.io/graphql failed, reason: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's altnames: DNS:*.xyz.io"]
name: 'FetchError',
message: 'request to https://api-dev.xyz.io/graphql failed, reason: Hostname/IP doesn\'t match certificate\'s altnames: "Host: localhost. is not in the cert\'s altnames: DNS:*.xyz.io"',
type: 'system',
errno: undefined,
code: undefined },
message: 'Network error: request to https://api-dev.xyz.io/graphql failed, reason: Hostname/IP doesn\'t match certificate\'s altnames: "Host: localhost. is not in the cert\'s altnames: DNS:*.xyz.io"',
extraInfo: undefined }
주의: react, redux, apollo-client(GraphQL) 및 Express를 사용하고 있습니다.JS(NodeJS)요청처의 API 서버가 다른 도메인에 있어서 변경할 수 없습니다.
클라이언트 사이드 렌더링을 사용하는 동안 모든 것이 의도한 대로 작동하고 있지만 서버 사이드 렌더링을 수행하는 동안 위의 오류가 발생합니다.
그래서 나는 내 서버에서 아래의 방법을 시도했지만, 여전히 성공하지 못했다.
자기서명증명서
https 옵션에 'rejectUnauthorized' 추가: false.
const options = { 'key': key, 'cert': cert, 'ca': [ fs.readFileSync('local-certificate.pem') ], 'rejectUnauthorized':false }; https.createServer(options, app).listen(httpsPort, '0.0.0.0', function onStart(err) { if (err) { console.log(err); } console.info('==> Listening on httpsPort %s. Open up http://0.0.0.0:%s/ in your browser.', httpsPort, options); });
또한 "Subject를 사용하여 자기 서명 증명서를 생성하는 방법"을 사용하여 자기 서명 증명서에 alt 이름을 추가하려고 했습니다.OpenSSL을 사용하는 AltName?
express 서버가 유효한 증명서를 사용하여 다른 도메인에 있는 API 서버에 요청을 할 수 있도록 증명서 검증을 우회하는 방법이 있습니까?
익스프레스 서버에서 변경을 가하여 수정할 수 있을지 어떨지 아직 잘 모르겠습니다.
이에 대한 통찰력을 알려주세요.
이 에러는, 질문의 코드에 의한 것이 아닙니다.
이 작업은 새로운 HTTP 서버를 만들고 있습니다.이 서버를 리슨합니다.httpsPort
와 결합할 것이다.0.0.0.0
즉, 모든 로컬 IP 주소를 의미합니다.
생략하는 것이 좋습니다.0.0.0.0
이 동작은 기본 동작이기 때문에 모든 로컬 IP 주소에 바인드 할 수 있습니다.단, 문제가 되지 않습니다.
그런 다음 이 서버에 인증서를 할당합니다.local-certificate.pem
즉, 이 서버에 접속하고 있는 클라이언트에 이 증명서가 제시됩니다.
코드의 이 부분에서는 외부 API에 접속하고 있지 않습니다.
마이클 랜디스는 이 점을 이해시키려고 노력했지만 해결책을 제시하지는 못했습니다.서비스가 192.168.100.100 위의 로컬에서 실행되고 있는 경우 호스트 파일(Linux의 /etc/hosts 등)에 있어야 합니다.
192.168.100.100 api-dev.xyz.io
SSR 중에라도 현재 실패한 요청은 api-dev.xyz.io으로 수행해야 합니다."http[s]://localhost/..."에 대한 요청을 피하는 것이 훨씬 쉽습니다.
이 에러 메시지는, https://api-dev.xyz.io/graphql 의 서버가, 착신 요구가 https://localhost/graphql 에 송신되고 있는 것을 인식하고 있는 것을 나타내고 있습니다.따라서 SSL 증명서가 https://localhost/를 보호하지 않기 때문에 실패합니다.
서버측 렌더링이 서버측 렌더링을 실행하고 있는 서버와 같은 서버에 대해 fetch/API 콜을 실행하여 렌더용 초기 데이터를 로드하려고 하는 경우가 있습니까?만약 그렇다면, 클라이언트가 API에서 필요로 하는 초기 데이터는 React가 서버측 렌더링에서 API 호출을 실행하는 대신 서버측 렌더링에 직접 전달될 수 있을까요?
호스트 이름은 NodeJS 아래의 시스템 수준 설정입니다.노드 복사본의 박스/VM에 액세스할 수 있어야 합니다.JS가 실행 중입니다.
언급URL : https://stackoverflow.com/questions/42133734/host-localhost-is-not-in-the-certs-altnames
'it-source' 카테고리의 다른 글
Mongodb - "mongo" 데이터베이스와 "mongod" 데이터베이스의 차이점 (0) | 2023.04.06 |
---|---|
DB에서 실제 연락처 양식 7 구조를 찾는 방법은 무엇입니까? (0) | 2023.04.06 |
MongoDB 관계: 임베드 또는 참조? (0) | 2023.04.06 |
meta_query, 관계 OR & AND를 모두 사용하여 검색하려면 어떻게 해야 합니까? (0) | 2023.04.01 |
Mobx - runInAction() 사용.그게 왜 필요하죠? (0) | 2023.04.01 |