0

我正在尝试使用 Google Cloud IoT Core 注册 IoT 设备,但在使用安装在 Google Cloud(设备注册表)上的 CA 证书签署设备公钥时遇到问题。

以下是谷歌的要求:

  • CA 和设备证书必须是 X.509v3,以 base64 编码,包装在 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 中。
  • CA 证书不需要自签名(“根 CA”);设备证书必须由注册表级别的特定 CA 证书签名。
  • Cloud IoT Core 拒绝未由注册表级证书签名的设备公钥。
  • CA 和设备证书必须采用 PEM 格式

在通过 StackOverflow 和其他地方的先前响应之后,这是我迄今为止尝试过的(使用默认配置文件):

选项1

  1. openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout ca.key -out ca.crt -subj "/CN=unused"
  2. openssl req -nodes -newkey rsa:2048 -days 365 -keyout device.key -out device.csr -subj "/CN=unused"
  3. openssl x509 -req -days 365 -in device.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out device.crt

选项 2

  1. openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout ca.key -out ca.crt -subj "/CN=unused"
  2. openssl genrsa -out device.key 2048
  3. openssl req -new -days 365 -key device.key -out device.csr -subj "/CN=unused"
  4. openssl x509 -req -days 365 -in device.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out device.crt

在这两种情况下都可以正常创建证书,但是当我尝试使用此证书注册设备时,我收到一条错误消息,指出无法根据 CA 证书验证设备证书。

签署设备证书时我做错了什么?您可以忽略 Cloud IoT 配置,因为我已经验证它可以工作(没有 CA 证书)。

非常感谢!

4

2 回答 2

0

感谢您的回复。我确实需要注册证书来确保不注册欺诈设备。经过数小时的反复试验,当我指定一个有效的主题而不是“/CN=unused”时,它最终起作用了。不幸的是,谷歌文档没有说明这可能是一个问题。签署程序是正确的。

于 2019-02-09T06:36:14.017 回答
0

选项 1 看起来是正确的,正如这里提到的:https ://cloud.google.com/iot/docs/how-tos/credentials/keys 。

听起来您指定了注册表级别的证书。

这意味着,除了像您一样创建密钥对之外,您还需要使用您在注册表级别指定的证书注册公钥。这真的让 IMO 感到困惑,在大多数情况下,没有必要。

除非您出于特定于您的设置的安全原因需要一个,否则请删除您拥有的任何注册表级别证书,然后使用创建的密钥注册设备。

如果不是这样,请验证您在创建设备时是否使用 x509 包装器指定了 RSA 密钥(有 RS256、ES256、RS256_X509、ES256_X509 的选项)。在我使用 X509 之前,我肯定已经这样做了,但偶然指定了 RSA。

于 2019-02-08T15:55:47.283 回答