通常来说,证书有效期校验和警告是CA那边控制的,如果想自己校验,得做额外事情。
如果是client端校验,比较简单了,在获得SSLSocketFactory时,传入KeyStore时,可以根据Alias找到证书,做校验:
java.security.cert.Certificate c = trustStore.getCertificate("server");
if(c!=null && c instanceof X509Certificate)
{
((X509Certificate )c).checkValidity();
}
如果是server端校验,有如下方法:
1. 写monitor定时创建ssl连接; (不推荐,因为HTTPS连接建立开销很大,而且速度相比HTTP连接慢多了)
2. 写脚本调用证书工具检查,各种工具检查日期命令如下:
openssl:
openssl x509 -in server.crt -noout -dates
如果只检查过期日期,用-enddate替换-dates
keytool:
利用keytool -list -v -keystore server.crt 的list功能,加-v参数,输出复杂信息,然后过滤
find /opt/keystores -name 'mdfcp_https.keystore' | xargs -i bash -c "echo {};keytool -list -v -keystore {} -storepass password | grep 'until: *' -A 3 -B 7"