Avertissement: pas de certificat approprié trouvé - continue sans authentification du client
De l'équipe, je suis confronté à problème suivant lorsque vous essayez de remplir une mutuelle poignée de main à l'aide de HTTPS
main, READ: TLSv1.2 Handshake, length = 30
*** CertificateRequest
Cert Types: RSA, DSS, ECDSA
Supported Signature Algorithms: SHA1withRSA, SHA1withDSA, SHA1withECDSA, SHA256withRSA, Unknown (hash:0x4, signature:0x2), SHA256withECDSA, SHA384withRSA, Unknown (hash:0x5, signature:0x2), SHA384withECDSA
Cert Authorities:
<Empty>
main, READ: TLSv1.2 Handshake, length = 4
*** ServerHelloDone
Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
Ma classe JAVA est un suit
public class ClientCustomSSL {
@SuppressWarnings("deprecation")
public final static void main(String[] args) throws Exception {
//Trust own CA and all self-signed certs
final String CLIENT_KEYSTORE = "yourkeystore.jks";
final String CLIENT_TRUSTSTORE = "catruststore.jks";
final char[] KEYPASS_AND_STOREPASS_VALUE = "Hello1".toCharArray();
System.setProperty("https.protocols", "TLSv1");
//SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keystore, keyPassword)(YK,"Hello1".toCharArray(),"Hello1".toCharArray()).loadTrustMaterial(CA, "Hello1".toCharArray(), (TrustStrategy) new TrustSelfSignedStrategy()).build();
KeyStore clientTrustStore = getStore(CLIENT_TRUSTSTORE, KEYPASS_AND_STOREPASS_VALUE);
KeyStore clientKeyStore = getStore(CLIENT_KEYSTORE, KEYPASS_AND_STOREPASS_VALUE);
SSLContext sslContext = SSLContexts.custom().loadKeyMaterial(clientKeyStore, "Hello1".toCharArray()).loadTrustMaterial(clientTrustStore,(TrustStrategy) new TrustSelfSignedStrategy()).build();
CloseableHttpClient httpclient = HttpClients.custom().setSSLContext(sslContext).build();
System.out.println("SSLCONETXT **** " + sslContext.getProvider());
try {
HttpGet httpget = new HttpGet("https://myserver:10220");
CloseableHttpResponse response = httpclient.execute(httpget);
try {
System.out.println("Inside TRY blcok");
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
EntityUtils.consume(entity);
} catch (Exception e) {
e.getMessage();
e.printStackTrace();
}
finally {
response.close();
}
} finally {
httpclient.close();
}
}
public static KeyStore getStore(final String storeFileName, final char[] password) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException
{
final String JAVA_KEYSTORE = "jks";
final KeyStore store = KeyStore.getInstance(JAVA_KEYSTORE);
URL url = ClientCustomSSL.class.getClassLoader().getResource(storeFileName);
String workingDir = System.getProperty("user.dir");
System.out.println("Current working directory : " + workingDir);
System.out.println("Value of URL *** " + url);
InputStream inputStream = url.openStream();
try {
store.load(inputStream, password);
} finally {
inputStream.close();
}
return store;
}
}
Je suis en train de préparer un fichier jar et le test de ce à partir de zone d'UNIX
Utilisant la commande suivante
java -Djavax.net.debug=ssl -cp snSSLclientTrustWithStoreCCC.jar cassandra.cass.ClientCustomSSL
J'ai suivi le post
pourquoi ne pas java envoyer le certificat du client lors de la connexion SSL?
et a aussi complété toutes les étapes mentionnées par Bruno.
Je ne suis pas sûr de ce que je suis absent ici. Toute aide sera appréciée
Les gars je suis soupçonner que SSLContext sslContext = SSLContexts.personnalisé().loadKeyMaterial(clientKeyStore, "Hello1".toCharArray()).loadTrustMaterial(clientTrustStore,(TrustStrategy) nouveau TrustSelfSignedStrategy()).build(); CloseableHttpClient httpclient = HttpClients.personnalisé().setSSLContext(sslContext).build(); n'Est pas l'ajout de tous les certificats de ClientTrustStore. Quelqu'un a rencontré ce genre de problème ?
j'ai eu le même cas jours auparavant,et je traite avec la jachère: debug et observé ceux de la classe: ClientHandshaker.serverHelloDone() et vous trouverez la reson!goo chance!
Je ne comprends pas la suggestion de 邱鸿霖 mais je suis bloqué sur cette trop. (Java 7, TLS 1.2)
j'ai eu le même cas jours auparavant,et je traite avec la jachère: debug et observé ceux de la classe: ClientHandshaker.serverHelloDone() et vous trouverez la reson!goo chance!
Je ne comprends pas la suggestion de 邱鸿霖 mais je suis bloqué sur cette trop. (Java 7, TLS 1.2)
OriginalL'auteur P.K | 2016-06-16
Vous devez vous connecter pour publier un commentaire.
CertificateRequest
message.OriginalL'auteur user207421
C'est en fait une zone où le protocole TLS 1.0 de la spécification et TLS 1.1/1.2 diffèrent.
En particulier, les éléments suivants ont été ajoutés à Section 7.4.4 (Demande de Certificat) dans TLS 1.1:
Si vide Cert Autorités signifie le client est libre d'envoyer les certificats sur le serveur, ce qui peut ou peut ne pas être accepté par le serveur de règles internes.
OriginalL'auteur peak
Dans mon cas, le problème s'est avéré être que j'étais de passage dans
null
que le mot de passe lors du chargement de mon magasin de clés:N'en est pas de produire des messages d'erreur, mais en mode silencieux à l'échec du chargement de la clé client & certificat.
La solution a été de passer du mot de passe:
OriginalL'auteur Sam