问题描述
我正在使用Google Assistant / Dialogflow。我要检查所有传入的请求。我需要获取并验证证书。 我尝试从HttpRequestServlet的标头或参数中获取证书,但一无所获。 我该怎么办?
解决方法
我假设您想在Java webhook服务器中验证传入的Dialogflow请求。
看看this.,您应该使用Mutual TLS身份验证:
要请求mTLS:
- 准备Webhook HTTPS服务器以在TLS握手期间请求客户端证书。
- 您的Webhook服务器应在收到客户端证书后对其进行验证。
- 为您的Webhook服务器安装证书链,客户端和服务器都可以相互信任该证书链。您应该使用Google Trust Services CA 1O1(GTS CA 1O1)。 GTS CA 1O1使用由Google Trust Services拥有和控制的GlobalSign R2根(GS Root R2)。您可以从以下网站下载:https://pki.goog/repository/
文档还提供了demo about how to do this on NodeJS server。在Java中,这取决于您使用的内容,但是过程是相同的。因此,请查看这些有关在Java服务器上设置mTLS的链接,您可以使用NodeJS服务器演示作为参考。
- https://docs.oracle.com/cd/E19879-01/819-3669/6n5sg7ccd/index.html
- https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html#Installing_a_Certificate_from_a_Certificate_Authority
- https://discuss.aerospike.com/t/how-to-use-mutual-authentication-tls-mtls-in-java/7314
- https://www.baeldung.com/x-509-authentication-in-spring-security#Mutual