Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置Grails以使用证书身份验证进行POST_Java_Ssl_Grails_Ssl Certificate_Apache Nifi - Fatal编程技术网

Java 配置Grails以使用证书身份验证进行POST

Java 配置Grails以使用证书身份验证进行POST,java,ssl,grails,ssl-certificate,apache-nifi,Java,Ssl,Grails,Ssl Certificate,Apache Nifi,我对证书和安全性的工作还很陌生,所以请原谅我,如果这对其他人来说是不需要动脑筋的话。我随后将Grails应用程序设置为使用自签名证书在HTTPS上运行 我正在尝试与运行在同一台机器上的另一个HTTPS网络(Nifi独立实例)建立双向SSL。我可以让Nifi实例通过HTTPS与Grails对话,但Grails与Nifi(特别是与ListenHTTP处理器)对话时遇到了问题 我希望有人能建议在通过HTTPS发布时如何在Grails中使用证书身份验证。 Nifi使用证书认证;然而,根据上面的指南,Gr

我对证书和安全性的工作还很陌生,所以请原谅我,如果这对其他人来说是不需要动脑筋的话。我随后将Grails应用程序设置为使用自签名证书在HTTPS上运行

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

我希望有人能建议在通过HTTPS发布时如何在Grails中使用证书身份验证。

Nifi使用证书认证;然而,根据上面的指南,Grails只指定了一个密钥库(用于接收请求?),所以我有点被抛弃了。通过指定--cert和--key属性,我可以成功地卷曲到Nifi的RESTAPI,但由于最终产品将是对客户机的一场战争,我希望以“正确的方式”设置它,并且我相信将这些文件留在客户机上对安全来说是一个非常大的禁忌

在早期开发期间,通过HTTP进行双向通信已经足够了,但是,我找不到任何关于将其与证书身份验证一起使用的内容(文档中只介绍了基本身份验证?)

当我寻找替代方案时,显示了很多,但是在查看it时,它声明需要整个密钥库JKS和密码。我认为这是接近,但不完全是我所寻找的考虑,我只有一个密钥库;我愿意在这里改正


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

在建立传出HTTPS连接时,如果远程端点(在本例中为Apache NiFi)需要客户端证书身份验证,则发起端点(Grails)将尝试提供证书。Grails用来将自己标识为服务的证书可以在这种情况下使用,前提是:

  • 证书没有
    ExtendedKeyUsage
    扩展集,或者如果设置了
    ServerAuth
    ClientAuth
    值。如果缺少
    ClientAuth
    ,系统将不允许将此证书用于客户端身份验证,这是此交换中的必要角色
  • 证书有一个有效的
    SubjectAlternativeName
    值,该值与它运行的主机名相匹配。规定SAN值应用于证书标识,而不是
    可分辨名称
    DN
    )和
    通用名称
    CN
    )。因此,如果Grails应用程序运行在
    https://grails.example.com
    ,SAN必须包含
    grails.example.com
    *.example.com
    的值
  • 必须将证书导入NiFi的信任库,以便NiFi能够验证此证书的颁发者
  • NiFi必须具有此“用户”的ACL权限。这可以通过用户界面或在首次启动NiFi之前修改
    conf/authorizers.xml
    文件来完成。有关更多信息,请参阅 您担心将
    cert.pem
    key.key
    文件留在客户端计算机上是可以理解的,但其中包含的敏感信息与密钥库中的数据相同。在某些情况下,Grails应用程序必须能够访问私钥才能执行HTTPS过程,因此在密钥库中使用私钥在功能上是等效的(您没有提到在
    *.key
    文件中使用密码,但显然您应该在密钥库中使用密码)