Sto provando a creare un server HTTPS personalizzato in Java (6) utilizzando la classe integrata com.sun.net.httpserver.HttpsServer. Funziona bene fino a quando non richiedo l'autenticazione del client. A quel punto fallisce con la seguente eccezione nel debug SSL sul server.Come disattivare il controllo dei vincoli (tipo di certificato Netscape) in Java6?
sun.security.validator.ValidatorException: Netscape tipo cert non consente l'utilizzo di client SSL
Sto usando certificati rilasciati dal nostro CA interno che viene utilizzato per tutte le applicazioni interne a noi. Ho controllato i dettagli del certificato e ho scoperto che il tipo era "Server SSL" (dettagli citati sotto). Poiché la nostra politica è di utilizzare un tipo "Server SSL" per tutte le applicazioni interne, è difficile modificare il certificato. Dal momento che voglio utilizzare un certificato server per il cliente, non credo che questo sia un problema di sicurezza.
Quello che sto cercando è un modo per disabilitare questo controllo dei vincoli in Java. Qualcuno ha incontrato questo e risolto questo? Qualsiasi aiuto è molto apprezzato.
migliori saluti, Arun
Owner: CN=myapp, OU=mygroup, O=mycompany
Issuer: O=MYCA
Serial number: 4cc8c1da
Valid from: Mon Jan 10 13:46:34 EST 2011 until: Thu Jan 10 14:16:34 EST 2013
Certificate fingerprints:
MD5: 8C:84:7F:7A:40:23:F1:B5:81:CD:F9:0C:27:16:69:5E
SHA1: 9B:39:0B:2F:61:83:52:93:D5:58:E5:43:13:7A:8F:E1:FD:AC:98:A4
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
[1]: ObjectId: 2.5.29.16 Criticality=false
PrivateKeyUsage: [
From: Mon Jan 10 13:46:34 EST 2011, To: Wed Jul 11 21:16:34 EDT 2012]
[2]: ObjectId: 2.5.29.15 Criticality=false
KeyUsage [
DigitalSignature
Key_Encipherment
]
[3]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: D3 47 35 9B B4 B7 03 18 C6 53 2C B0 FE FD 49 D8 .G5......S,...I.
0010: D0 FB EE 15 ....
]
]
[4]: ObjectId: 1.2.840.113533.7.65.0 Criticality=false
[5]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
[DistributionPoint:
[CN=CRL413, O=SWIFT]
]]
[6]: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:false
PathLen: undefined
]
****[7]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
NetscapeCertType [
SSL server
]****
[8]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 8F AF 56 BC 80 77 A3 FD 9E D2 89 83 98 FE 98 C7 ..V..w..........
0010: 20 65 23 CC e#.
]
]
Grazie mille. Ha funzionato molto bene. Sono d'accordo che la soluzione ideale sia quella di aggiornare la politica della CA, ma se non costruisco la soluzione di bypass, l'aggiornamento del mio software su centinaia di sistemi richiederà il rinnovo immediato del certificato. – Arun
Sembra una soluzione sporca che durerà per tutta l'eternità e dopo. – sjas
@sjas Sì, spero solo che chiunque legga questo leggi il testo e non semplicemente copia e incolla. – Bruno