Skip to content

创建数字证书

PKCS12(公钥密码学标准 #12)格式的数字证书通常包含公钥和私钥,以及与证书相关的其他信息。PKCS12 是一种用于存储安全证书、私钥和其他相关信息的标准格式。这种格式通常用于导出、备份和共享在安全通信和身份验证中使用的数字证书和私钥。

在创建 PKCS12 标准的证书时,除了确认您身份信息的数据外,通常还需要设置密码保护您的证书,只有持有密码的人才能访问其中的私钥,并通过证书执行签署文件等操作。

以下是创建数字签名证书的示例代码:

swift
// 创建证书。
// 
// 密码: ComPDFKit
// 
// 信息: /C=SG/O=ComPDFKit/D=R&D Department/CN=Alan/[email protected]
// 
// C=SG: 这展示的是国家代码“SG”,代表国家:新加坡。
// O=ComPDFKit: 这是组织(O)字段,表示组织或实体的名称,在本例中组织为"ComPDFKit"。
// D=R&D Department: 这是部门(D)字段,表示组织内的特定部门,在本例中为“R&D Department”。
// CN=Alan: 这是通用名称(CN)字段,通常表示个人或实体的名称。在这种情况下,它是"Alan"。
// [email protected]: 电子邮件地址是[email protected]
//
// CPDFCertUsage.CPDFCertUsageAll: 同时用于数字签名和数据验证。
// 
// is_2048 = true: 增强的安全加密。
//

 var certificateInfo = [String: Any]()
 certificateInfo["CN"] = "Alan"
 certificateInfo["emailAddress"] = emailTextField?.inputTextField?.text
 certificateInfo["C"] = coutryCode

 let path = NSHomeDirectory() + "/Documents"
 let writeDirectoryPath = "\(path)/Signature"
 let tempFilePath = "\(writeDirectoryPath)/\(URL(fileURLWithPath: filePath ?? "").lastPathComponent)"

 CPDFSignature.generatePKCS12Cert(withInfo: certificateInfo, password: "123", toPath: tempFilePath, certUsage: .digSig)
objective-c
// 创建证书。
// 
// 密码: ComPDFKit
// 
// 信息: /C=SG/O=ComPDFKit/D=R&D Department/CN=Alan/[email protected]
// 
// C=SG: 这展示的是国家代码“SG”,代表国家:新加坡。
// O=ComPDFKit: 这是组织(O)字段,表示组织或实体的名称,在本例中组织为"ComPDFKit"。
// D=R&D Department: 这是部门(D)字段,表示组织内的特定部门,在本例中为“R&D Department”。
// CN=Alan: 这是通用名称(CN)字段,通常表示个人或实体的名称。在这种情况下,它是"Alan"。
// [email protected]: 电子邮件地址是[email protected]
//
// CPDFCertUsage.CPDFCertUsageAll: 同时用于数字签名和数据验证。
// 
// is_2048 = true: 增强的安全加密。
//

NSMutableDictionary * cer = [NSMutableDictionary dictionary];
[cer setValue:@"Alan" forKey:@"CN"];
[cer setValue:@"[email protected]" forKey:@"emailAddress"];
[cer setValue:@"CN" forKey:@"C"];

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
  NSString *writeDirectoryPath = [NSString stringWithFormat:@"%@/%@", path, @"Signature"];

  if (![[NSFileManager defaultManager] fileExistsAtPath:writeDirectoryPath])
      [[NSFileManager defaultManager] createDirectoryAtURL:[NSURL fileURLWithPath:writeDirectoryPath] withIntermediateDirectories:YES attributes:nil error:nil];

  NSString *currentDateString = [self tagString];

  NSString *writeFilePath = [NSString stringWithFormat:@"%@/%@-%@.pfx",writeDirectoryPath,@"CSignature",currentDateString];


BOOL save = [CPDFSignature generatePKCS12CertWithInfo:cer password:@"123" writeFilePathtoPath:writeFilePath certUsage:CPDFCertUsageDigSig];