2012-05-08 1 views
0

J'avais posté une question différente et maintenant je l'édite parce que j'ai réussi à faire ce que je faisais au début. Utilisation de "How do I use SSL" J'ai configuré mon courtier ActiveMQ acceptant les connexions SSL et j'essayais de mettre en place un client pour tester la communication. Je me suis dit que je pouvais le faire en définissant les propriétés du système:ActiveMQ sur SSL: "acceptInvalidBrokerCert = true" ne fonctionnait pas

static { 
    System.setProperty("javax.net.ssl.keyStore", "/home/amq/SSL/client.ks"); 
    System.setProperty("javax.net.ssl.keyStorePassword", "password"); 
    System.setProperty("javax.net.ssl.trustStore", "/home/amq/SSL/client.ts"); 
} 

Les problèmes que je rencontrais étaient dans la création des keystores/et l'exportation du clés certifiées certificat de courtier. Lorsque j'ai supprimé les fichiers .ks et .ts et refait tout comme expliqué dans "How do I use SSL" cela a fonctionné.

Ma nouvelle question est: Comment puis-je établir une connexion sans avoir besoin de créer un fichier de clés pour le client et d'importer le certificat du courtier?

Je cherche un moyen d'accepter n'importe quel certificat que le courtier m'envoie. En this link j'ai trouvé un moyen réglage d'une option URI:

ssl://localhost:61617?transport.acceptInvalidBrokerCert=true 

mais il ne fonctionne pas pour moi. A partir du moment où j'ajoute "? Transport.acceptInvalidBrokerCert = true" dans ma chaîne d'URI ou d'URL, la méthode cesse de fonctionner et je ne peux plus établir de connexion. Est-ce que quelqu'un peut me fournir un exemple de client java ou C++ qui se connecte à un courtier ActiveMQ en utilisant SSL sans importer le certificat du courtier, ou en d'autres termes, accepter un certificat invalide?

Répondre

1

L'indicateur URI auquel vous faites référence n'est valide que pour les clients .NET utilisant NMS.ActiveMQ, les clients C++ et Java ne possèdent pas ce paramètre. Il existe un moyen pour le client C++ de le faire, vous devez définir une propriété système comme suit avant de créer la connexion.

System::getProperty("decaf.net.ssl.disablePeerVerification", "false"); 

La meilleure façon d'obtenir les certs ssl travail sans que ces options de test est de créer un certificat racine, puis créez le courtier cert avec vous certificat racine et ajouter le certificat racine au magasin de confiance du client de manière que ce soit courtier avec un cert signé par votre certificat racine sera digne de confiance.

+0

J'ai travaillé avec mon exemple [ActiveMQ-CPP] (http://activemq.apache.org/cms/). Maintenant, je vais chercher une propriété similaire pour mon client Java. –