No tiene que hacer nada. Siempre que la solicitud que inicie la sesión sea https
Tomcat marcará la cookie de sesión como secure
.
También miré para ver si había algo que documentara oficialmente ese hecho pero no pude encontrarlo. Pero ese es el comportamiento de al menos Tomcat 6.0.32 en adelante.
Aquí está el código de org/apache/catalina/connector/Request.java
que, al final del método, comprueba si la solicitud es seguro y si es así, establece el indicador secure
en la cookie:
/**
* Configures the given JSESSIONID cookie.
*
* @param cookie The JSESSIONID cookie to be configured
*/
protected void configureSessionCookie(Cookie cookie) {
cookie.setMaxAge(-1);
Context ctxt = getContext();
String contextPath = null;
if (ctxt != null && !getConnector().getEmptySessionPath()) {
if (ctxt.getSessionCookiePath() != null) {
contextPath = ctxt.getSessionCookiePath();
} else {
contextPath = ctxt.getEncodedPath();
}
}
if ((contextPath != null) && (contextPath.length() > 0)) {
cookie.setPath(contextPath);
} else {
cookie.setPath("/");
}
if (ctxt != null && ctxt.getSessionCookieDomain() != null) {
cookie.setDomain(ctxt.getSessionCookieDomain());
}
if (isSecure()) {
cookie.setSecure(true);
}
}
ACTUALIZACIÓN: se puede intentar establecerlo usted mismo manualmente utilizando un filtro, etc. Puede consultar un ejemplo de set 'secure' flag to JSESSION id cookie
Solo quiero confirmar que: Visualización de las cookies de sesión en una herramienta de desarrollo del navegador de su elección (Webinspector de Safari en mi caso) le dirá que la cookie es de hecho una cookie segura solamente –