Вы можете найти даты истечения срока действия сертификатов SSL ( X509Certificate ), которые были отправлены одноранговому узлу во время рукопожатия следующим образом:
public Map<BigInteger, CertificateInfo> getCertificatesExpiryDatesAndDistinguishedNames(SslContext context) {
SSLSessionContext sessionContext = context.sessionContext();
return Collections.list(sessionContext.getIds()).stream()
.map(sessionContext::getSession)
.map(SSLSession::getLocalCertificates) // certificate(s) that were sent to the peer during handshaking
.map(Stream::of)
.map(streamOfCertificates -> streamOfCertificates.map(X509Certificate.class::cast))
.flatMap(Function.identity())
.collect(toMap(X509Certificate::getSerialNumber, this::convertToCertificateInfo));
}
private CertificateInfo convertToCertificateInfo(final X509Certificate certificate) {
return new CertificateInfo(certificate.getIssuerX500Principal(), certificate.getNotAfter());
}
Возвращает карту серийных номеров сертификатов и информация о сертификате (отличительное имя эмитента и дата окончания срока действия):
public class CertificateInfo {
private final X500Principal x500Principal;
private final Date endDateOfValidityPeriod;
public CertificateInfo(X500Principal x500Principal, Date endDateOfValidityPeriod) {
this.x500Principal = x500Principal;
this.endDateOfValidityPeriod = endDateOfValidityPeriod;
}
public X500Principal getX500Principal() {
return x500Principal;
}
public Date getEndDateOfValidityPeriod() {
return endDateOfValidityPeriod;
}
}