档案数字证书是用于电子文件归档管理的电子签名工具,确保电子档案的真实性、完整性和不可否认性。它基于公钥基础设施(PKI)技术,由权威的证书颁发机构(CA)签发。
在开始操作前,请确保已安装以下软件:
验证OpenSSL安装是否成功:
``` openssl version ```如果显示版本号,说明安装正确。
CSR是向CA申请证书时必须提交的文件,包含你的公钥和身份信息。
首先生成2048位的RSA私钥,这是证书安全的基础:
``` openssl genrsa -out private.key 2048 ```重要:生成的private.key文件必须严格保密,不要分享给任何人。建议立即设置文件权限:
``` chmod 600 private.key Linux/Mac icacls private.key /inheritance:r /grant:r "%USERNAME%:R" Windows ```使用以下命令创建CSR,系统会提示输入相关信息:
``` openssl req -new -key private.key -out certificate.csr ```需要准确填写以下信息:
生成后检查CSR内容是否正确:
``` openssl req -in certificate.csr -text -noout ```不同CA的申请流程略有差异,以下是通用步骤。
国内档案系统通常使用以下CA:
访问对应CA官网,找到"个人数字证书申请"或"单位数字证书申请"入口。
一般需要准备:
将CSR文件用文本编辑器打开,复制全部内容粘贴到CA申请页面的对应文本框。
CA审核通过后,你会收到:
如果CA只提供.cer文件,你需要将私钥和证书合并为PKCS12格式:
``` openssl pkcs12 -export -out certificate.p12 -inkey private.key -in certificate.cer ```
系统会提示设置保护密码,请务必记住这个密码。
以常见的基于Java的档案管理系统为例。
将certificate.p12文件复制到系统指定目录,例如:
``` /opt/archives/certificates/ ```修改系统配置文件application.properties:
``` 数字证书配置 digital.certificate.path=/opt/archives/certificates/certificate.p12 digital.certificate.password=你设置的密码 digital.certificate.type=PKCS12 CA根证书路径 ca.root.certificate.path=/opt/archives/certificates/root_ca.cer ```在签名配置文件中添加:
``` 签名算法 signature.algorithm=SHA256withRSA 签名有效期(天) signature.validity.days=3650 时间戳服务(可选) timestamp.server.url=http://timestamp.digicert.com ```使用OpenSSL对PDF文件签名:
``` openssl smime -sign -in original.pdf -out signed.pdf -signer certificate.cer -inkey private.key -binary ```验证签名是否成功:
``` openssl smime -verify -in signed.pdf -noverify -out verified.pdf ```Java示例代码:
``` import java.security.; import java.security.cert.Certificate; public class ArchiveSigner { public byte[] signDocument(byte[] documentData) throws Exception { KeyStore keyStore = KeyStore.getInstance("PKCS12"); FileInputStream fis = new FileInputStream("/path/to/certificate.p12"); keyStore.load(fis, "password".toCharArray()); fis.close(); PrivateKey privateKey = (PrivateKey) keyStore.getKey("alias", "password".toCharArray()); Certificate[] chain = keyStore.getCertificateChain("alias"); Signature signature = Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); signature.update(documentData); return signature.sign(); } } ```检查证书有效期和详细信息:
``` openssl pkcs12 -info -in certificate.p12 openssl x509 -in certificate.cer -text -noout ```证书过期前30天需要续期:
如果私钥泄露,立即联系CA撤销证书:
问题:系统提示"无法加载证书"或"密码错误"
解决方案:
openssl pkcs12 -export -out new.p12 -inkey private.key -in certificate.cer问题:其他系统无法验证你的签名
解决方案:
openssl verify -CAfile root_ca.cer certificate.cer问题:系统提示证书将在N天后过期
解决方案:
完成以上所有步骤后,你的档案数字证书已经可以正常使用。每次操作电子档案时,系统会自动使用证书进行数字签名,确保档案的法律效力。定期检查证书状态,及时续期,确保档案管理工作的连续性。