仅出于学习目的,我想在本地环境中开发的应用程序中使用 SSL。
所以我希望我的所有连接都通过 ssl。
如何使用 Glassfish 4.0 实现这一点?
以下是使用 JAAS 表单身份验证的示例:
在 web.xml 上,这段代码定义了哪些 url 将启用 SSL:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>userauth</realm-name>
<form-login-config>
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/loginError.jsf</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<display-name>ConstraintSSL</display-name>
<web-resource-collection>
<web-resource-name>protected</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
现在在您的应用程序服务器(glassfish)上配置您的身份验证领域“userauth”,在此示例中:
create-auth-realm --classname com.sun.enterprise.security.ee.auth.realm.jdbc.JDBCRealm
--property jaas-context=jdbcRealm:datasource-jndi=oracleXE10gJDBCResource:user-
table=TB_USER:user-name-column=ID_USER:password-column=PASSWORD:group-
table=TB_USER_GROUP_USER:group-name-column=ID_GROUP:group_table_user-name-
column=ID_GROUP:digest-algorithm=MD5 userauth
在此示例中,我在名为“TB_USER”的用户表上创建了一个基于 JDBC 的领域,并使用 MD5 加密密码以及组表名称。您可以创建自己的身份验证领域,它可以是文件、jdbc 或其他 JAAS 类型(请参阅每个特定的 JAAS 文档)。
现在对您的应用程序的任何请求都应使用 SSL。
Glassfish 将重定向到 SSL 端口(默认 8181),您的浏览器将显示默认 SSL 信任证书警报窗口(如果您使用自签名证书)询问您是否信任连接,接受后您应该会看到在 SSL 模式下正确呈现的页面 - https
导航到 Glassfish 管理控制台,然后导航到服务器设置 --> 网络侦听器。在那里,您可以将侦听器设置为使用 SSL。默认情况下有 3 个监听器,4848 用于管理控制台,8080 用于一般 http 监听,8181 用于安全 http 监听。您可以在这里做几件事
为侦听器启用 SSL 或编辑侦听器检查安全选项
要禁用侦听器,请取消选中
在 SSL 选项卡上填写 SSL 信息