TL; DR: Keytool拒绝导入有效期少于1天的证书
LONG VERSION:我遇到了keytool的问题。我正在创建一个自签名的CA和SUBCA证书链,用于使用openssl进行测试,但是我稍后将其导入keytool会遇到一些问题。
我按以下方式创建CA
openssl rand -out ./private/.rand 1024
openssl genrsa -out ./private/cakey.pem -aes256 -rand ./private/.rand 2048
openssl req -days 365 -subj'/C=US/ST=SM/O=Company/OU=Org/CN=ROOT_CA/emailAddress=whatever@whatever.com'-x509-new -key ./private/ cakey.pem -out cacert.pem -config openssl.cnf
然后我将以与上面完全相同的方式创建SUB_CA(不同的CN)并使用root ca certfificate以下列方式签名
openssl ca -startdate 120524100000Z -enddate 120524101500Z -in ../sub_ca/subcareq.pem -out ../sub_ca/cacert.pem -extensions v3_ca -config openssl.cnf
(注意上述证书仅有效15分钟)
直到这里一切都很好。当我尝试将两者都导入JKS时会出现此问题。根证书导入没有问题,但SUB_CA给出了以下问题
keytool -import -trustcacerts -alias subca -file sub_ca / cacert.pem -keystore keystore.jks
输入密钥库密码:
重新输入新密码:
keytool error:java.lang.Exception:输入的不是X.509证书
我不明白为什么它一直说这是一个完全有效的证书。如果我更改证书的开始日期和结束日期,而是在签名时将 1天( - 天1)作为有效期,则会毫无问题地导入jks。
keytool是否有某种限制,只能导入有效期超过24小时的X509或类似的东西?