2010-08-19 6 views
2

J'utilise JBoss 4.2. Et j'aimerais qu'un certain modèle d'URL soit visité via HTTPS. J'ai utilisé un fichier keystore auto-certifié, et le problème est le suivant: une fois l'URL HTTPS visitée, toutes les autres URL du site passent toutes par HTTPS, quel est le problème?Configuration HTTPS dans Jboss

mis à jour: J'ai découvert le problème. J'ai utilisé le chemin relatif aux références aux ressources, donc une fois que l'URL passe à HTTPS, tous les liens suivants sont tous démarrés avec HTTPS, dois-je donc utiliser un chemin absolu dans les pages web HTTPS?

Ma configuration est comme ceci: dans web.xml:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>artists.jsp</web-resource-name> 
     <url-pattern>/artists.*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

dans server.xml:

<Connector port="8443" 
    scheme="https"  
    secure="true"  
    clientAuth="false" 
    keystoreFile="${jboss.server.home.dir}/conf/server.keystore" 
    keystorePass="changeit" 
    sslProtocol = "TLS" /> 

Répondre

1

Unfortunatly oui, depuis une URL commence par le protocole (http, https) vous avez besoin de chemins absolus pour basculer entre eux.

Ma recommandation est la suivante: écrire une méthode statique qui formate vos URLs complètement et introduit une convention de nommage comme toutes les pages commençant par i. _sec sont destinés à être utilisés avec https.

pseudocode (non testé juste pour illustrer l'idée de base):

public static String fmtURL(String relpath) { 
    String url = relparth.startsWith("_sec") ? "https://":"http://"; 
    url += hostname;      // from a configfile 
    if (relparth.startsWith("_sec") { 
     url += ":443"; 
    } 
    url += relpath; 
    return url; 
}