2012-08-06 2 views
6

Je souhaite exécuter Tomcat intégré qui utilise uniquement le protocole HTTPS (8443). Je ne veux pas utiliser le port 8080 du tout. Une idée sur?Intégrer Tomcat-7 pour exécuter uniquement en https

 

    Connector httpsConnector = new Connector(); 
    httpsConnector.setPort(httpsPort); 
    httpsConnector.setSecure(true); 
    httpsConnector.setScheme("https"); 
    httpsConnector.setAttribute("keystoreFile", appBase + "/.keystore"); 
    httpsConnector.setAttribute("clientAuth", "false"); 
    httpsConnector.setAttribute("sslProtocol", "TLS"); 
    httpsConnector.setAttribute("SSLEnabled", true); 

    Tomcat tomcat = new Tomcat(); 
    tomcat.getService().addConnector(httpsConnector); 
    tomcat.setPort(8080); 
    Connector defaultConnector = tomcat.getConnector(); 
    defaultConnector.setRedirectPort(8443); 

    tomcat.setBaseDir("."); 
    tomcat.getHost().setAppBase(appBase); 

    StandardServer server = (StandardServer) tomcat.getServer(); 
    AprLifecycleListener listener = new AprLifecycleListener(); 
    server.addLifecycleListener(listener); 

Merci

+0

Avez-vous réussi à interdire le port 8080? –

Répondre

2

Vous devez retirer le connecteur défini dans [tomcat-dir] /conf/server.xml qui se fixe à 8080 et un connecteur séparé pour HTTPS.

+0

En fait, j'intègre tomcat, je n'utilise pas server.xml là. Le connecteur par programme sera ajouté – Srinivas

+0

Comment votre tomcat démarre-t-il? Pouvez-vous fournir plus de détails dans votre question? – Chris

+0

le code édité inclu code – Srinivas

0

J'ai juste essayé d'utiliser l'extrait dans la question pour créer le httpsConnector et cela a très bien fonctionné! Sauf que je devais ajouter une ligne manquante:

httpsConnector.setAttribute("keystorePass", "YOUR-PASSWORD-HERE"); 

Réglage que la configuration du mot de passe I lorsque creating the keystore avec keytool a fait l'affaire.

Merci!

0

Récupérez le defaultConnector de l'instance Tomcat et configurez-le pour https. De cette façon, il n'y a pas d'autre connecteur:

Connector defaultConnector = tomcat.getConnector(); 
    defaultConnector.setPort(8443); 
    defaultConnector.setSecure(true); 
    defaultConnector.setScheme("https"); 
    defaultConnector.setAttribute("keystorePass", "password"); 
    defaultConnector.setAttribute("keystoreFile", absolutePath + "/keystore.jks"); 
    defaultConnector.setAttribute("clientAuth", "false"); 
    defaultConnector.setAttribute("sslProtocol", "TLS"); 
    defaultConnector.setAttribute("SSLEnabled", true); 
Questions connexes