配置X.509证书身份验证

证书身份验证涉及使用公钥/私钥来标识自己。与基本用户名和密码方案相比,这是一个更安全的替代方案。

X.509 是一个定义良好的公钥证书格式标准。本教程将介绍设置X.509证书身份验证的过程。

先决条件

本教程假设:

  • 支持使用客户端证书进行身份验证的Web浏览器,也称为“双向SSL”。本教程使用 火狐 .

  • 支持SSL的servlet容器。本教程使用 雄猫 .

  • geoserver部署在Tomcat中。

配置用户/组服务

必须在GeoServer中配置通过X.509证书认证的用户。为此,将添加新的用户/组服务。

  1. admin 用户。

  2. 单击 Users, Groups, and Roles 链接位于 Security 导航边栏的部分。

    ../../../_images/cert1.jpg
  3. 向下滚动到 User Group Services 面板并单击 Add new 链接。

  4. 创建名为的新用户/组服务 cert-ugs 填写设置表如下:

    • 集合 Password encryptionEmpty 因为用户不会通过密码进行身份验证。

    • 集合 Password policydefault .

    ../../../_images/cert2.jpg
  5. 点击 Save .

  6. 回到 Users, Groups, and Roles 第页,单击 cert-ugs 链接。

    ../../../_images/cert3.jpg
  7. 选择 Users 选项卡并单击 Add new user 链接。

    ../../../_images/cert4.jpg
  8. 添加名为的新用户 rod 和分配 ADMIN 角色。

    ../../../_images/cert5.jpg
  9. 点击 Save .

  10. 单击 Authentication 链接位于 Security 导航边栏的部分。

    ../../../_images/cert6.jpg
  11. 向下滚动到 Authentication Filters 面板并单击 Add new 链接。

    ../../../_images/cert7.jpg
  12. 单击 X.509 链接并填写表格如下:

    • 集合 Name 到“cert”

    • 集合 Role sourceUser group service 并将关联的下拉列表设置为 cert-ugs

    ../../../_images/cert8.jpg
  13. 点击 Save .

  14. 回到“身份验证”页,向下滚动到 Filter Chains 面板。

  15. 点击 webName 列。

  16. 选择 cert 过滤并将其放置在 rememberme 过滤器。

    ../../../_images/cert9.jpg
  17. 点击 Close .

  18. 您将返回上一页。点击 Save .

    警告

    最后一个更改需要 Close 然后 Save 单击。您可能希望返回 web 对话框以验证是否进行了更改。

下载示例证书文件

与其演示如何创建或获取有效证书(这超出了本教程的范围),不如将示例文件作为Spring安全性的一部分提供。 sample applications 将被使用。

下载并解包 sample certificate files .此存档包含以下文件:

  • ca.pem 是由“Spring Security Test CA”证书颁发机构颁发的证书颁发机构(CA)证书。此文件用于对服务器和客户端证书进行签名。

  • server.jks 是Java密钥存储库,包含由Tomcat使用的服务器证书和私钥,并在SSL连接的设置期间呈现给用户。

  • rod.p12 包含用于通过Web浏览器执行客户端身份验证的客户端证书/密钥组合。

为SSL配置Tomcat

  1. 复制 server.jks 文件到 conf Tomcat安装根目录下的目录。

  2. 编辑Tomcat conf/server.xml 并添加一个SSL连接器:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true"
         clientAuth="true" sslProtocol="TLS"
         keystoreFile="${catalina.home}/conf/server.jks"
         keystoreType="JKS" keystorePass="password"
         truststoreFile="${catalina.home}/conf/server.jks"
         truststoreType="JKS" truststorePass="password" />
    

    这将在端口8443上启用SSL。

  3. 默认情况下,Tomcat启用了APR。要禁用它以便上面的配置可以工作,请删除或注释掉server.xml配置文件中的以下行

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    
  4. 重新启动Tomcat。

安装客户端证书

  1. 在Firefox中,选择 Preferences (或) Tools ‣ Options )导航到 Advanced 面板。

  2. 选择 Encryption 标签(或 Certificates 选项卡,具体取决于您的版本),然后单击 View Certificates 按钮。

    ../../../_images/cert10.jpg
  3. Your Certificates 面板单击 Import 按钮并选择 rod.p12 文件。

  4. 提示时输入密码 password .

    ../../../_images/cert11.jpg
  5. 点击 OK 关闭火狐首选项。

测试证书登录

  1. 使用https:https://localhost:8443/geoserver/web导航到端口“8443”上的geoserver admin。

  2. 系统将提示您输入证书。选择 rod 身份证明。

    ../../../_images/cert12.jpg
  3. 当出现有关自签名服务器证书的警告时,请单击 Add Exception 若要添加安全例外,请执行以下操作。

    ../../../_images/cert13.jpg

结果是用户 rod 现在登录到geoserver管理界面。

../../../_images/cert14.jpg

备注

从版本31开始,火狐实现了一种新的证书使用机制,这将导致 Issuer certificate is invalid error (sec_error_ca_cert_invalid) 尝试使用自签名存储库(如建议的存储库)时出错。为了避免这种情况,您可以通过浏览 关于:配置 设置 security.use_mozillapkix_verification 参数到 .

../../../_images/mozilla_pki.jpg