4 回答

TA貢獻1828條經驗 獲得超4個贊
如果您得到:
Error: 7 PERMISSION_DENIED: The signature of device credential in position 0 could not be verified against any registry certificate.
錯誤并且您的系統曾經正常工作,請檢查根 CA 證書的到期日期。如果超過該日期,它將返回此錯誤。

TA貢獻1891條經驗 獲得超3個贊
我遇到了同樣的問題。我可以用下面的代碼解決這個問題。
package cloudIotCore
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"os"
)
func create() {
//
// Create key
//
reader := rand.Reader
bitSize := 2048
key, err := rsa.GenerateKey(reader, bitSize)
if err != nil {
panic(err)
}
publicKeyAsc1Bytes, err := x509.MarshalPKIXPublicKey(&(key.PublicKey))
if err != nil {
panic(err)
}
publicPemKey := &pem.Block{
Type: "PUBLIC KEY",
Bytes: publicKeyAsc1Bytes,
}
privatePemKey := &pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(key),
}
//
// Create Device with publicPemKey
//
:
//
// Save pem files
//
publicPemFile, err := os.Create(PATH_TO_PUBLICKEY)
if err != nil {
panic(err)
}
defer publicPemFile.Close()
err = pem.Encode(publicPemFile, publicPemKey)
if err != nil {
panic(err)
}
privatePemFile, err := os.Create(PATH_TO_PRIVATEKEY)
if err != nil {
panic(err)
}
defer privatePemFile.Close()
err = pem.Encode(privatePemFile, privatePemKey)
if err != nil {
panic(err)
}
}

TA貢獻1815條經驗 獲得超10個贊
編碼頭和編碼方法不匹配。如果你想使用
asn1Bytes := x509.MarshalPKCS1PublicKey(&key.PublicKey)
那么pem.Block
類型應該是Type: "RSA PUBLIC KEY",
.
如果您想要其他常見的公鑰格式(SubjectPublicKeyInfo ASN.1 結構),請保留pem.Block
現有的格式,而使用
asn1Bytes, err := x509.MarshalPKIXPublicKey(&key.PublicKey)
我不知道 GCP 的期望是什么,但幾乎可以肯定是其中之一。
- 4 回答
- 0 關注
- 232 瀏覽
添加回答
舉報