# 证书有效期和创建密钥时不一致

#### 问题现象

创建密钥时设置有效期25年，而在AGC申请发布证书后却显示有效期是3年，为什么不一致呢？

#### 背景知识

1.  生成密钥和证书请求文件时需要填写证书的有效期（Validity字段），一般默认25年，覆盖应用/元服务的完整生命周期。密钥文件格式为.p12，如下：
    
2.  在AGC申请发布证书成功后实名认证开发者的发布证书有效期为3年。申请调试证书成功后实名认证开发者的调试证书有效期为180天，未实名开发者的调试证书有效期为14天。证书文件格式为.cer。

#### 问题定位

生成密钥时设置的证书有效期25年以上就是避免频繁更新密钥，保证应用能持续运行。而AGC申请的证书最长只有3年，意味着到期后需要更新证书。

#### 分析结论

1.  使用开发工具DevEco Studio或者命令行工具生成的密钥填写的证书有效期是p12文件的有效期，而AGC申请的证书有效期是cer文件的有效期。
2.  p12文件的有效期可以手动设置，建议25年以上是因为密钥是私有的，开发者必须通过p12文件及其对应的csr文件生成cer文件。即使cer文件丢失或者过期，只需使用p12文件在AGC重新申请即可，且更换cer文件不影响在架应用。
3.  AGC申请的cer有效期无法手动设置，依据证书类型，开发者账号是否实名等默认不同的有效期。cer文件是由AGC颁发的数字证书，用于验证应用的身份和签名。通过cer文件，验证应用身份，可以确保应用由合法开发者发布；即：证书设置有效期是用于动态验证应用来源合法。

#### 修改建议

创建密钥时建议设置25年以上的有效期，关注AGC申请的证书有效期时间，到期及时更新。

#### 常见FAQ

Q：证书到期会有通知吗？

A：证书到期前3个月，AGC会发送邮件提醒。也可以主动查看证书有效期并更换证书。

Q：在AGC申请发布证书有效期为2028/5/7,实际证书有效期2049/3/16，这是为什么？

A：本地生成密钥和证书文件时，系统默认设置了25年的使用期限；在AGC申请发布证书成功后，实名认证开发者的发布证书有效期为3年。到期后需要在AGC上更新证书。