Apollo 客户端自签名证书

Posted

技术标签:

【中文标题】Apollo 客户端自签名证书【英文标题】:Apollo-client self signed certificate 【发布时间】:2018-09-21 20:15:26 【问题描述】:

有没有办法让 ApolloClient 接受来自带有自签名证书的服务器的请求?

    import ApolloClient from 'apollo-boost';

    const client = new ApolloClient(
        uri: `https://$window.location.hostname:8080/graphql`,
        rejectUnauthorized: false
    );
rejectUnauthorized: false 不起作用

请求错误: 选项https://localhost:8080/graphqlnet::ERR_CERT_AUTHORITY_INVALID

【问题讨论】:

【参考方案1】:

您也可以使用代理选项进行开发:

let fetchOptions = 

if (process.env.NODE_ENV !== 'production') 
  const https = require('https')
  fetchOptions =  agent: new https.Agent( rejectUnauthorized: false ) 

const link = new HttpLink(
  uri: 'https://localhost/api/graphql',
  credentials: 'same-origin',
  fetchOptions,
)

【讨论】:

【参考方案2】:

前端

即使您单击“我了解风险”并转到该页面,Apollo 客户端也可能拒绝证书。您可以通过从本地主机启用自签名证书来解决此问题:在 chrome 类型上

chrome://flags/#allow-insecure-localhost

到导航并点击启用。

其他选项是将证书安装为受信任的。更多信息请关注this question。

后端

如果您在后端使用 Apollo 客户端和 Nodejs,您可以使用以下方式启动该过程:

NODE_TLS_REJECT_UNAUTHORIZED=0

这可以通过例如env-cmd 包。

【讨论】:

以上是关于Apollo 客户端自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Apollo Client iOS 接受自签名证书

信任来自 IIS 的自签名证书

openssl——自签名根证书、签名客户端和服务器证书

手动验证 SSL 自签名证书签名 - javascript [重复]

HttpClient 拒绝发送自签名客户端证书

是否可以强制 WCF 测试客户端接受自签名证书?