我有一個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捆綁在一起。就我而言,這就是關鍵。你的回答幫我弄清楚了要去哪裏看。雖然我沒有回電查詢證書,但我想使用的服務具有其自己的近似等效性;看到我的答案。再次感謝! –