我有一个iOS应用程序,它使用gRPC与服务器进行通信。为了保证连接的安全,服务器发布了绑定到主机名的证书。我需要根据iOS设备上的根证书验证该证书。获取iOS中包含的受信任根证书的PEM文件(用于验证gRPC)
它看起来像下面的方法,通过GRPC iOS上提供的,可以用来做验证:
open class func setTLSPEMRootCerts(_ pemRootCert: String?, forHost host: String) throws
,我需要提供根证书我想使用的所以使用它验证以及服务器针对其颁发证书的主机。主机部分很简单 - 它应该是服务器颁发的与其绑定的证书的主机名。但我坚持拿到根证书。
我发现下面的示例中,用于访问一个根证书:
NSString *certsPath = [[NSBundle mainBundle] pathForResource:@"cacert_product" ofType:@"pem"];
NSError *error;
NSString *contentInUTF8 = [NSString stringWithContentsOfFile:certsPath
encoding:NSUTF8StringEncoding
error:&error];
在该示例中,所得到的contentInUTF8
然后可以用作证书参数前述方法。但是,示例中的资源名称cacert_product
似乎是占位符;无论如何,我的设备上没有这样的资源,我不认为它会引用我想要使用的资源。
我想要使用的证书是包含在iOS 10中的受信任根证书的this list上受信任的根证书之一。我不明白如何访问它。
所以我的问题是:如何获得iOS设备上包含的受信任根证书之一的PEM文件?
嗨,谢谢你的回答!是的,发行人拥有证书,而且获得证书很简单。但我特别试图不添加任何证书,尤其是看到服务器证书的根与iOS捆绑在一起。就我而言,这就是关键。你的回答帮我弄清楚了要去哪里看。虽然我没有回电查询证书,但我想使用的服务具有其自己的近似等效性;看到我的答案。再次感谢! –