2015-09-28 18 views
10

Ho configurato SSL nella mia applicazione web. Ho installato il certificato nel mio Tomcat secondo i passaggi richiesti.Eseguire reindirizzamento 301 da http a https in Apache Tomcat

Il tutorial che ho seguito è https://www.mulesoft.com/tcat/tomcat-security

ho forzato l'uso di HTTPS su HTTP che significa che qualsiasi richiesta di http sarà inoltrata a https. Ho fatto i seguenti cambiamenti nella mia server.xml

<Connector port="8080" protocol="HTTP/1.1" 

      connectionTimeout="20000" 

      redirectPort="443" 

      proxyHost="10.1.1.1" proxyPort="80" 

      URIEncoding="UTF-8" 

      maxHttpHeaderSize="32768"/> 

sono i cambiamenti web.xml come segue:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>SecureConnection</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

Tuttavia, il reindirizzamento quello che sta avvenendo è temporaneo re-direct ie 302. Voglio usare 301 re-direct ie., reindirizzamento permanente.

Come posso ottenere quello?

+0

Hai trovato una risposta a questa domanda? Ho lo stesso problema. – Thermometer

+0

Lo stesso qui, qualche progresso sul problema? – Default71721

+0

Per i googler che desiderano "applicare https tomcat", "sempre https tomcat" o simili, questa è la soluzione. https://jelastic.zendesk.com/hc/en-us/community/posts/206121996-HTTP-HTTPS-redirection-into-the-Tomcat fornisce anche una soluzione. – koppor

risposta

2

Questo è configurato sul tuo Reame. Vedi l'attributo transportGuaranteeRedirectStatus della tua particolare implementazione di Realm.

https://tomcat.apache.org/tomcat-8.5-doc/config/realm.html

Es: server.xml ha questo out-of-the-box

<Realm className="org.apache.catalina.realm.LockOutRealm"> 
    <!-- This Realm uses the UserDatabase configured in the global JNDI 
     resources under the key "UserDatabase". Any edits 
     that are performed against this UserDatabase are immediately 
     available for use by the Realm. --> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 
    </Realm> 

Non ha impostato transportGuaranteeRedirectStatus quindi il default è 302. Se si vuole rendere utilizzare un 301 , basta aggiungere l'attributo transportGuaranteeRedirectStatus="301" al reame di livello superiore (potresti non avere Realm nidificati a seconda della tua configurazione) e riavviare Tomcat.

Es:

<Realm className="org.apache.catalina.realm.LockOutRealm" transportGuaranteeRedirectStatus="301"> 
    <!-- This Realm uses the UserDatabase configured in the global JNDI 
     resources under the key "UserDatabase". Any edits 
     that are performed against this UserDatabase are immediately 
     available for use by the Realm. --> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase" /> 
    </Realm> 

Se non si dispone di un tag Reame definito nella configurazione, Tomcat imposterà utilizzando un NullRealm. Se si desidera eseguire l'override del reindirizzamento in questa situazione, sarà necessario definire un NullRealm sotto con la proprietà transportGuaranteeRedirectStatus impostata su di esso.

Spero che questo aiuti!

Problemi correlati