5

仅出于学习目的,我想在本地环境中开发的应用程序中使用 SSL。

所以我希望我的所有连接都通过 ssl。

如何使用 Glassfish 4.0 实现这一点?

4

2 回答 2

3

以下是使用 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

于 2014-07-07T06:30:58.223 回答
0

导航到 Glassfish 管理控制台,然后导航到服务器设置 --> 网络侦听器。在那里,您可以将侦听器设置为使用 SSL。默认情况下有 3 个监听器,4848 用于管理控制台,8080 用于一般 http 监听,8181 用于安全 http 监听。您可以在这里做几件事

  • 为侦听器启用 SSL 或编辑侦听器检查安全选项

  • 要禁用侦听器,请取消选中

  • 在 SSL 选项卡上填写 SSL 信息

于 2013-10-08T12:17:30.193 回答