为什么我会从Angular服务使用自签名证书调用HTTPS API时收到此ERR_CERT_AUTHORITY_INVALID错误?

时间:2018-11-14 15:21:58

标签: angular rxjs angular5 javascript-framework angular-http

尝试从Angular服务调用外部REST HTTPS API时遇到以下问题:

我有这个Angular服务:

@Injectable()
export class MailDetailProtocolloService {

    private protocolloAooApiUrl = 'https://myservercom:443/my_project/api/GetDeparmentsList';  

    constructor(
        private http: HttpClient
    )
    {
    }

    /** GET AOO List chiamando un'API esterna */

    getAooList(): Observable<Aoo[]> {
        return this.http.get<Aoo[]>(this.protocolloAooApiUrl)
    }

}

问题是此API使用自签名证书,并调用它,我在控制台中获得此错误消息:

GET https://myservercom:443/my_project/api/GetDeparmentsList net::ERR_CERT_AUTHORITY_INVALID

为什么?如何修复此问题并使用此自签名证书进行调用?

1 个答案:

答案 0 :(得分:2)

默认情况下,浏览器不接受自签名证书。在您的计算机上安装了允许发布证书的受信任的证书颁发机构(简称“ CA”)列表。为了使计算机信任您的证书,您必须将CA手动添加到此信任列表中,或者直接安装自签名证书。

如何执行此操作取决于您的操作系统和浏览器。

Here is the tutorial for Windows

Here is the turorial for Mac

Here is the tutorial for Linux

与“胖客户端”不同,没有任何方法可以对Web应用程序自动执行此操作;这是所有现代浏览器的默认安全策略。想象一个网站可以在后台将敏感数据发送到恶意网站。