Bir sertifikanın süresi dolduğunda java'nın TrustManager uygulaması yok sayılıyor mu?
Aşağıdakileri denedim:
- keytool
ve -startdate "1970/01/01 00:00:00"
parametresini kullanarak Süresi dolmuş bir sertifikayla bir P12 anahtar deposu oluşturdum.Geçerli sertifikalardaki Java istemci yöneticisi davranışı
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 1 entry
Alias name: fake
Creation date: 5 ╠ά± 2011
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Issuer: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Serial number: -1c20
Valid from: Thu Jan 01 00:00:00 EET 1970 until: Fri Jan 02 00:00:00 EET 1970
Certificate fingerprints:
MD5: A9:BE:3A:3D:45:24:1B:4F:3C:9B:2E:02:E3:57:86:11
SHA1: 21:9D:E1:04:09:CF:10:58:73:C4:62:3C:46:4C:76:A3:81:56:88:4D
Signature algorithm name: SHA1withRSA
Version: 3
*******************************************
Tomcat için sunucu sertifikasının olarak bu sertifikayı kullandı: -
ben sertifikayı ihraç etti.
Sonra erkek kedi bağlı bir apache'yi HttpClient kullanarak, ancak ilk önce müşterinin güvenini-deposuna süresi bitmiş bir sertifika eklenir (
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
bir TrustManager
kullanılarak ve süresi sertifikası yükleme).Bağlantı başarısız olma bekliyordum.
Bunun yerine bağlantı başarılı.
System.setProperty("javax.net.debug", "ssl");
kullanma
görüyorum:
***
Found trusted certificate:
[
[
Version: V3
Subject: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 1024 bits
modulus: 10350555024148635338735220482157687267055139906998169922552357357346372886164908067983097037540922519808845662295379579697361784480052371935565129553860304254832565723373586277732296157572040989796830623403187557540749531267846797324326299709274902019299
public exponent: 65537
Validity: [From: Thu Jan 01 00:00:00 EET 1970,
To: Fri Jan 02 00:00:00 EET 1970]
Issuer: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
SerialNumber: [ -1c20]
]
ben TLS içinde süresi dolmuş sertifika Tomcat bağlayıcı tarafından göndermek olduğunu el sıkışma görüyoruz.
Ancak istemci (örn. TrustManager) bağlantıyı reddetmez.
Varsayılan davranış bu mu?
Son kullanma tarihini kontrol etmek için bir şekilde trustmanager'ı yapılandırmam gerekiyor mu?
GÜNCELLEME:
Ben kullanılan gerçek TrustManager X509TrustManagerImpl olduğunu gördük. Burada X509TrustManagerImpl bu sınıfın minimal bir mantığa sahip olduğunu söylüyor. Yanlış TrustManager'ı kullanıyorum mı?
Update2: Bir sertifika yolunu inşa eş tarafından sağlanan kısmi veya tam sertifika zinciri göz önüne alındığında sertifika sona erme
void checkServerTrusted(X509Certificate[] chain,String authType)
throws CertificateException
için kontrol ederse javadoc X509TrustManager itibaren net değil güvenilen köke geri dönüp doğrulanmışsa ve sunucu için güvenilir güvenilen kimlik doğrulaması numaralı SSL kimlik doğrulaması ation type.The kimlik doğrulaması türü, "RSA", "DHE_DSS" gibi bir String olarak gösterilen şifre takımları anahtar değiştirme algoritmasıdır. Not: Bazı ihraç edilebilir şifre setleri için, değiştirme algoritması, el sıkışması sırasında çalışma zamanında belirlenir. Örneğin, TLS_RSA_EXPORT_WITH_RC4_40_MD5 için, AuthType bir geçici RSA anahtarı değişimi için kullanılan ve RSA anahtar sunucu sertifikası kullanıldığında RSA_EXPORT zaman olmalıdır. Denetleme, büyük/küçük harfe duyarlıdır.
Teşekkür
Tomact onay sertifikasının geçerlilik süresini uzatma konusunda herhangi bir çözüm buldunuz mu? Var olan herhangi bir diğer 'X509TrustManager' uygulaması? – Andremoniy
@Andremoniy: Kendi özel güven yöneticinizi yazmanız gerekiyor – Cratylus