Restlet javax.net.le protocole ssl.SSLHandshakeException: null cert de la chaîne d'

Je suis en train de tester la communication SSL entre le client et le serveur local.
Donc, j'ai généré un certificat à l'aide de commandes. Ajouté ce certificat dans le fichier cacert. Également généré .fichier p12.

Je suis en utilisant le même .p12 fichier dans le serveur et le client.
C'est le code du serveur

Server server = component.getServers().add(Protocol.HTTPS, port);
Series<Parameter> params = server.getContext().getParameters();

params.add("keystorePath", ".p12 file path");
params.add("keystoreType", "PKCS12");
params.add("needClientAuthentication","true");

component.getDefaultHost().attach("", "/AA"), new AAClass());
component.start();

Et c'est le code client:

Client client = trustAllCerts();
clientResource = new ClientResource(url);
clientResource.setNext(client);
try{
      clientText = clientResource.post"");
 }
 catch(ResourceException e){
    e.printStackTrace();
 }

public Client trustAllCerts() {
    Client client = null;
    try {
        client = new Client(new Context(), Protocol.HTTPS);
        Context context = client.getContext();


        final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
        context.getAttributes().put("sslContextFactory", new SslContextFactory() {
            public void init(Series<Parameter> parameters) {

            }

            public SSLContext createSslContext() {
                return sslContext;
            }
        });
        TrustManager tm = new X509TrustManager() {
            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            }

            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            }

            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };
        context.getAttributes().put("hostnameVerifier", new HostnameVerifier() {                
            @Override
            public boolean verify(String arg0, SSLSession arg1) {
                return true;
            }

        });         

        sslContext.init(null, new TrustManager[] { tm }, null);         

    } catch (KeyManagementException e) {
        LOGGER.error("Exception in Key Management" + e);
    } catch (NoSuchAlgorithmException e) {
        LOGGER.error("Exception in Algorithm Used" + e);
    }
    return client;
}

Je suis arriver exception suivante:

Restlet-1299242, fatal error: 42: null cert chain
javax.net.ssl.SSLHandshakeException: null cert chain
%% Invalidated:  [Session-25, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
Restlet-1299242, SEND TLSv1.2 ALERT:  fatal, description = bad_certificate
Restlet-1299242, WRITE: TLSv1.2 Alert, length = 2
Restlet-1299242, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain
Restlet-1299242, called closeInbound()
Restlet-1299242, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?
Restlet-1299242, called closeOutbound()
Restlet-1299242, closeOutboundInternal()

J'ai essayé d'ajouter un fichier de clés et truststore en utilisant le Système.setProperty() mais ça ne fonctionne pas.

S'il vous plaît aider. Merci à l'avance.

Comment voulez-vous créer votre certificat auto-signé? Pourriez-vous poster vos pas? Et quand vous obtenez cette exception (pendant que le serveur de départ, tandis que le client est le démarrage, lorsque le client fait une requête au serveur, etc)? Avez-vous essayé de vous connecter avec d'autres reste des clients comme les navigateurs? Si votre certificat est en place et prêt sur votre serveur, et si vous faites une demande via le navigateur, vous devez obtenir un message d'avertissement à propos de votre fournisseur de certificats.
En fait j'ai téléchargé le certificat à partir d'un fournisseur de certificat(exemple ci-dessus est pour les locaux de reproduire le problème ), dans le téléchargement bundle-je obtenir un certificat d'autorité racine, un intermédiaire de l'autorité de certificat, un certificat et une clé. J'ai essayé toutes les combinaison, mais toujours null cert de la chaîne d'exception. Aussi, je suis arriver exception lorsqu'un client capable de communiquer avec le serveur. Également dans le navigateur j'ai vu avertissement sur le certificat non approuvé, j'ai donc ajouté le certificat dans le navigateur, mais toujours obtenir la valeur null cert de la chaîne d'émission.

OriginalL'auteur vikas27 | 2015-09-10