NiFi:配置 SSLContext、Truststore 或 Keystore 认证

NiFi: Configuring SSLContext, Truststore or Keystore Certification

我正在尝试从 DC Metro's API tool 获取数据。我正在使用 "Train Position" link。

我需要配置我的 SSLContextService,但我只有网站提供的主键和辅助键。例如,密钥的形式为:

5bcf1f7d091f4f618f1eefbefe23a56e
f15633bd2dd44a1f944c96361c0ab26f

如何在 NiFi 的 SSLContext 部分进行配置?我正在使用 GetHTTP。这是我目前拥有的图片,首先是 GetHTTP 配置,然后是 SSL 配置:

下一个配置:

我不知道如何将上面的这些键用作 TruststoreKeystore,或者这是否是我应该做的。我的密钥库文件名指向 cacerts,但我知道那些密钥不在其中。我试图将它们转换为 .pem,但这是一个错误,尤其是当我将它们转换为 keystore.jks 时。

我收到这个错误:

我如何获得访问权限?

有用link on API link

请注意,您提供的 API 密钥与密码一样被视为敏感信息。

这些密钥用于访问 API,与用于 SSL 协商的 NiFi keystore/truststores 无关。在这种情况下使用 Java cacerts 是正确的,但您不需要将 API 密钥添加到信任库。

此页面描述了请求需要采用的形式:https://developer.wmata.com/docs/services/5763fa6ff91823096cac1057/operations/5763fb35f91823096cac1058#TrainPosition

我建议您阅读如何使用网络 APIs 和发出网络请求,然后了解如何使用您的 API 密钥。他们在底部给出了一个卷曲示例:

curl -v -X GET "https://api.wmata.com/TrainPositions/TrainPositions?contentType={contentType}"
-H "api_key: {subscription key}"

--data-ascii "{body}" 

{subscription key} 是您的 API 密钥,{contentType} 是 HTTP 响应内容类型。如果您不熟悉这些术语,您可能需要研究它们。我建议先让上面的 curl 命令起作用,然后再将其传递给 NiFi。

curl -v -X GET "api.wmata.com/TrainPositions/TrainPositions?contentType=json" -H "api_key: e13626d03d8e4c03ac07f95541b3091b" 对我有用。 (这是来自 wmata 网站的测试 API 密钥)。

在 InvokeHTTP 中,您将添加一个名为 'api_key' 的处理器 属性(点击右上角的加号),并将值设置为您的订阅者密钥(我不知道这是不是主键),并将“要发送的属性”属性 值设置为“api_key”。这将发送 api_key 属性(密钥)作为 header 调用 api_key 就像我们在 curl 中使用 -H "api_key: e136..." 所做的一样。