当前位置: 首页 > 知识库问答 >
问题:

配置Grails以使用证书身份验证发布

滕英奕
2023-03-14

我对使用证书和安全性是一个新手,所以请原谅我,如果这对其他人来说是一个不需要考虑的问题。我遵循了本指南,将Grails应用程序设置为使用自签名证书在HTTPS上运行。

我试图与运行在同一台机器上的另一个HTTPS网络(一个Nifi独立实例)建立双向SSL。我可以让Nifi实例通过HTTPS与Grails对话,但Grails与Nifi对话(特别是与ListenHTTP处理器对话)时遇到了问题。

当我寻找替代方案时,HTTPBuilder经常出现,但是查看相关文档(第139行'certificate()'),它说明它需要一个完整的密钥存储库JKS和密码。我认为这是接近的,但不完全是我正在寻找的,考虑到我只有一个密钥库;我愿意在这里改正。

请注意,我将无法回应,至少在此问题发布后的第二天。

共有1个答案

东门茂实
2023-03-14

在建立传出HTTPS连接时,如果远程endpoint(在本例中为Apache NiFi)需要客户端证书身份验证,则始发endpoint(Grails)将尝试提供证书。Grails用来将自己标识为服务的证书很适合在此场景中使用,前提是:

  1. 证书没有ExtendedKeyUsage扩展名设置,或者如果设置了该扩展名,则同时存在ServerAuthClientAuth值。如果缺少clientauth,系统将不允许将此证书用于客户端身份验证,而客户端身份验证是此交换中的必要角色。
  2. 证书具有一个有效的subjectalternativeName值,该值与运行该证书的主机名相匹配。RFC 6125规定SAN值应用于证书标识,而不是可分辨名称(DN)和通用名称(CN)。因此,如果Grails应用程序运行在https://Grails.example.com上,则SAN必须包含Grails.example.com*.example.com的值。
  3. 必须将证书导入到NiFi的信任存储库中,以便允许NiFi对此证书的演示者进行身份验证。
  4. nifi必须具有该“用户”的ACL权限。这可以通过UI或者在首次启动NiFi之前修改conf/authorizers.xml文件来完成。有关更多信息,请参阅NiFi管理指南-授权者配置。

您对将cert.pemkey.key文件保留在客户端计算机上的担忧是可以理解的,但是其中包含的敏感信息与密钥存储库中的数据相同。在某些情况下,Grails应用程序必须可以访问私钥,以便执行HTTPS进程,因此在密钥库中拥有私钥在功能上是等价的(您没有提到在*.key文件中拥有密码,但显然您应该在密钥库中拥有密码)。

 类似资料:
  • 我想在讲Grails的REST中设置基于证书的登录身份验证。 按照Burt Beckwith的文档,我使用Spring Security插件(spring-security-core:2.0-RC3)来设置X509身份验证: 生成证书文件和Tomcat配置似乎有点棘手,但已经在另一个答案中指出。我这样做了,并使用当前标准配置Tomcat 7,首先是keystoreFile、keystorePass

  • 我不熟悉SSL和证书。我一直在做关于客户端证书认证的研究。我看过这个和wiki。 因此,如果我必须为我的B2B REST服务实现客户端证书身份验证解决方案,我应该执行以下操作 要求客户端生成自己的私钥,并为其公钥生成证书(CA 颁发?)。通过电子邮件或 USB 闪存盘发送该证书。 在服务器端将客户端的公共证书导入信任存储区并启用客户端身份验证 在握手期间,客户端会出示其证书并进行身份验证,因为服务

  • 在这里尝试看看是否有人已经用Rundeck对AD进行了LDAP身份验证。我正在使用RunDesk的JRE运行方法。以下是我到目前为止所做的工作: 我已经设置了jaas-ldap.conf,如Rundeck authentication users页面所示 我已向管理员请求ssl证书。要使用ldaps,rundeck需要ssl证书,这是在他们的站点上编写的。获得证书后,他们提到以下两个步骤: 一旦获

  • 问题内容: 我正在尝试连接到HTTPS URL,但是我需要使用客户端身份验证以及第三方软件在我的系统上放置的证书。 我丝毫不知道如何找到或使用它,我所要做的只是C#示例代码,这与我为此找到的所有Java答案都大不相同。(例如,KeyStore显然需要某种密码吗?) 这是我拥有的C#示例代码 然后,它仅遍历WS2_store_Certs CertificateCollection并一路检查它们。再进

  • 我有一个需要以两种不同方式保护的API: 1) 对除1以外的所有请求URL使用JWT,该URL需要使用基本身份验证进行保护 2) 一个url的基本身份验证。 我已经为JWT和Basic Auth设置了安全配置。我的问题是,当我使用有效的用户名和密码请求基本的经过身份验证的URL时,它会成功地对我进行身份验证,并将数据存储在cassandra中。 然后,我希望必须通过/api/login为所有其他请

  • 我有一个客户端服务器场景。 我有厚客户端和瘦客户端(浏览器),它们与我的服务器进行通信。 我的胖客户端使用X-509系统证书进行客户端证书身份验证,并与服务器通信 此外,此证书用于生成签名URL(带过期时间),以便我的瘦客户机与服务器通信,用于完整性和授权目的。在这种情况下,我也有一个基于令牌的方法用于身份验证。 现在,我想使用客户端凭据或基于身份验证代码将身份验证机制移动到基于OAuth的流。