假设两个人运行相同的代码,并且第一个使用createDate和expireDate创建证书,并且如果
,则文件有效 createDate 现在,如果第一个人将此证书(假设对他有效)发送给世界各地落后8小时的其他人,那么对于第二个人它将无效。在这种情况下,该问题如何解决或如果我们希望第二个人不用等待8个小时就可以使用它,该有什么政策?
答案 0 :(得分:0)
处理X.509证书的RFC 5280指定了两种方法来对证书中的有效时间进行编码:
两者都依赖GMT区域作为参考。如果两种实现都使用正确的时区进行生成和检查,则您的方案应该不会出现问题。
答案 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
方法来获取createDate
和expireDate
并将其保存到文件中,或者您想存储它们,然后使用certificateValid()
方法来检查currentDate
是否在两者之间。
感谢吉姆指出我的错误。
注意:这很容易被欺骗/欺骗,因为它取决于从客户端计算机读取给JVM的时间。因此,请勿将其用于免费试用验证等。