Java web service via https - Comment ajouter un certificat auto-signé dans un client de l'api?
J'ai un "Hello World" service web créé avec axis2. Je voudrais écrire un client de l'api, qui pourrait utiliser ce service sur https
avec un certificat auto-signé. J'ai un certificat auto-signé myCertificate.cer
et un keystore
contenant.
Voici mon client API :
public class MyApi{
public Object callMyService(){
Axis2TestStub stub = new Axis2TestStub(
"https://localhost:8443/axis2/services/Axis2Test");
System.setProperty("javax.net.ssl.trustStore",
"src/main/resources/myKeystore.jks")
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
Hello request = new Hello();
request.setMot("World");
HelloResponse response = stub.hello(request);
Object mot = response.get_return();
return mot;
Il fonctionne, mais je voudrais utiliser myCertificate.cer
et pas un keystore
contenant. Quelqu'un sait comment faire cela? J'ai essayé de remplacer https
protocole, sans succès :
HttpSecureProtocol myHttpsProtocol = new HttpSecureProtocol();
myHttpsProtocol .setCheckHostname(false);
myHttpsProtocol .addTrustMaterial(new TrustMaterial("myCertificate.cer"));
Protocol customHttps = new Protocol("https",
(ProtocolSocketFactory) myHttpsProtocol , 8443);
Protocol.registerProtocol("https", customHttps);
OriginalL'auteur albertototo | 2010-02-08
Vous devez vous connecter pour publier un commentaire.
La serveur de magasin de clés contiennent le serveur auto-signé du certificat et la clé privée et est utilisé par le serveur pour signer des messages et de retour d'informations d'identification pour le client.
Sur le côté client, vous devez importer le certificat de serveur dans le la confiance des clients du magasin (et, en général, vous ne voulez pas la clé privée du client magasin de confiance afin de vous extraire un seul fichier de certificat-à-dire sans la clé privée, puis vous importez serveur de certificat dans le magasin de confiance).
Ce n'est pas un magasin de clés, mais un magasin de confiance et d'ajouter le certificat du client magasin de confiance est nécessaire parce que les certificats auto-signés ne sont pas signé par une autorité de certification racine et ne sont pas approuvées par défaut. Si vous avez besoin de créer une chaîne de confiance.
Maintenant, vous pouvez peut-être distribuer la banque de confiance dans le BOCAL de l'API client. Cette approche est discutée dans ce fil (le plus gros problème étant que vous aurez à redistribuer le POT lorsque le certificat de serveur expire). Personnellement, je n'aime pas cette solution.
À mon humble avis, la bonne solution si vous voulez sauter la banque de confiance genre de choses serait d'acheter un vrai certificat à partir d'un célèbre fournisseur de certificats pour lesquels vous avez déjà des certificats d'autorité de certification racine dans le magasin de confiance (comme Verisign, Thawte).
OriginalL'auteur Pascal Thivent
Je voudrais simplement ajouter le certificat dans le fichier cacerts du JDK l'exécution de votre application. Si vous faites cela, alors vous n'aurez pas à faire autre chose. Le code ci-dessus ne serait pas nécessaire. Vous ajoutez le certificat dans le keystore par l'exécution d'une commande similaire à ci-dessous:
OriginalL'auteur Taylor Leese