发送带有未来时间戳记的证书

时间:2018-07-26 22:39:56

标签: java date certificate

假设两个人运行相同的代码,并且第一个使用createDate和expireDate创建证书,并且如果

,则文件有效

createDate

现在,如果第一个人将此证书(假设对他有效)发送给世界各地落后8小时的其他人,那么对于第二个人它将无效。在这种情况下,该问题如何解决或如果我们希望第二个人不用等待8个小时就可以使用它,该有什么政策?

2 个答案:

答案 0 :(得分:0)

处理X.509证书的RFC 5280指定了两种方法来对证书中的有效时间进行编码:

  • UTCTime
  • GeneralizedTime

两者都依赖GMT区域作为参考。如果两种实现都使用正确的时区进行生成和检查,则您的方案应该不会出现问题。

请参见RFC 5280 on validity

答案 1 :(得分:-2)

编辑:抱歉,我没有意识到Date始终使用UTC时间。因此,只要您想获取日期,就可以像这样访问日期:

import java.util.Date;

public class CurrentDateTime {
    public static String getCurrDateTime() {
        Date date = new Date();
        return date;
    }
}

public class DateCertificate {
    public static void createCertificate() {
        Date createDate = CurrentDateTime.getCurrDateTime();
        /* Save createDate to file or something */
    }

    public static boolean certificateValid() {
        Date currentDate = CurrentDateTime.getCurrDateTime();
        /* Get createDate and expireDate from file or something */
        return currentDate.after(createDate) && currentDate.before(expireDate);
    }
}

您可以使用getCurrDateTime()和其他一些Date方法来获取createDateexpireDate并将其保存到文件中,或者您想存储它们,然后使用certificateValid()方法来检查currentDate是否在两者之间。

感谢吉姆指出我的错误。

注意:这很容易被欺骗/欺骗,因为它取决于从客户端计算机读取给JVM的时间。因此,请勿将其用于免费试用验证等。