You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS中获取.crt证书与.provisionprofile文件的过期时间

获取.crt证书与.provisionprofile配置文件的过期时间

一、解析.crt证书的过期时间

你当前的代码仅读取了证书文件数据,未完成X.509证书的有效解析。可以借助Apple的Security框架直接提取证书的有效期信息,实现代码如下:

import Security

func getCRTExpiryDate(for filename: String) -> Date? {
    guard let url = Bundle.main.url(forResource: filename, withExtension: "crt"),
          let data = try? Data(contentsOf: url),
          let certificate = SecCertificateCreateWithData(kCFAllocatorDefault, data as CFData) else {
        return nil
    }
    
    // 提取证书有效期属性
    guard let certInfo = SecCertificateCopyValues(certificate, nil, nil) as? [CFString: Any],
          let validity = certInfo[kSecCertValidity] as? [CFString: Date],
          let expiryDate = validity[kSecCertValidityEndDate] else {
        return nil
    }
    
    return expiryDate
}

// 调用示例
if let expiry = getCRTExpiryDate(for: "sample") {
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .long
    print("CRT证书过期时间:\(dateFormatter.string(from: expiry))")
}

这段代码通过SecCertificateCreateWithData将文件数据转换为证书对象,再通过SecCertificateCopyValues获取证书的有效期属性,最终提取出过期时间。

二、解析.provisionprofile配置文件的过期时间

配置文件本质是带签名的plist文件,直接读取并解析plist即可获取过期时间:

func getProvisionProfileExpiryDate(for filename: String) -> Date? {
    guard let url = Bundle.main.url(forResource: filename, withExtension: "provisionprofile"),
          let data = try? Data(contentsOf: url),
          let plist = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) as? [String: Any],
          let expiryDate = plist["ExpirationDate"] as? Date else {
        return nil
    }
    
    return expiryDate
}

// 调用示例
if let expiry = getProvisionProfileExpiryDate(for: "YourProfile") {
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .long
    print("配置文件过期时间:\(dateFormatter.string(from: expiry))")
}

直接将配置文件数据解析为plist字典,从中取出ExpirationDate字段即可得到过期时间。

内容的提问来源于stack exchange,提问作者Keyur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:22:04