我尝试开发一个自动化程序来使用公共 RSA pem 证书注册新的 IoT 设备,但我遇到了一个问题,我不知道原因。
问题是生成了 RSA_PEM public pem 我的自动化被 GCP IoT Server 拒绝并出现错误。该错误是“位置 1 中设备凭证的密钥数据无效。请确保格式正确:RS256 公钥无效”
当我调试我的代码时,pem 公共证书看起来很好。但我不确定。
我正在分享生成成对的私有和公共证书的 go 代码。
package cert
import (
"bytes"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"io"
)
type CertificateRSA struct {
Private io.Reader
Public io.Reader
}
func Create() (*CertificateRSA, error) {
bitSize := 2048
key, err := rsa.GenerateKey(rand.Reader, bitSize)
if err != nil {
return nil, err
}
var privateKey = &pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(key),
}
var priBuff bytes.Buffer
err = pem.Encode(&priBuff, privateKey)
if err != nil {
return nil, err
}
// asn1Bytes := x509.MarshalPKCS1PublicKey(&key.PublicKey)
asn1Bytes := x509.MarshalPKCS1PublicKey(&key.PublicKey)
var publicKey = &pem.Block{
Type: "PUBLIC KEY",
Bytes: asn1Bytes,
}
var pubBuff bytes.Buffer
err = pem.Encode(&pubBuff, publicKey)
return &CertificateRSA{
Private: &priBuff,
Public: &pubBuff,
}, err
}
你能看出我的代码有什么问题吗?
明月笑刀无情
万千封印
动漫人物
温温酱
相关分类