support configuration of x.509
This commit is contained in:
parent
6376cbfa2a
commit
6f9e9d3fb0
|
@ -71,6 +71,10 @@ type DeviceConfig struct {
|
||||||
Servers string
|
Servers string
|
||||||
Qos byte
|
Qos byte
|
||||||
BatchSubDeviceSize int
|
BatchSubDeviceSize int
|
||||||
|
AuthType uint8
|
||||||
|
ServerCaCer []byte
|
||||||
|
DeviceCertFile string
|
||||||
|
DeviceCertKeyFile string
|
||||||
}
|
}
|
||||||
|
|
||||||
type BaseDevice interface {
|
type BaseDevice interface {
|
||||||
|
@ -127,7 +131,7 @@ type baseIotDevice struct {
|
||||||
AuthType uint8 // 鉴权类型,0:密码认证;1:x.509证书认证
|
AuthType uint8 // 鉴权类型,0:密码认证;1:x.509证书认证
|
||||||
ServerCaCert []byte // 平台CA证书
|
ServerCaCert []byte // 平台CA证书
|
||||||
ClientCertFile string // 设备证书路径
|
ClientCertFile string // 设备证书路径
|
||||||
ClientCetKeyFile string
|
ClientCertKeyFile string
|
||||||
Servers string
|
Servers string
|
||||||
Client mqtt.Client
|
Client mqtt.Client
|
||||||
commandHandlers []CommandHandler
|
commandHandlers []CommandHandler
|
||||||
|
@ -178,7 +182,7 @@ func (device *baseIotDevice) Init() bool {
|
||||||
|
|
||||||
// 设备使用x.509证书认证
|
// 设备使用x.509证书认证
|
||||||
if device.AuthType == AUTH_TYPE_X509 {
|
if device.AuthType == AUTH_TYPE_X509 {
|
||||||
if len(device.ServerCaCert) == 0 || len(device.ClientCertFile) == 0 || len(device.ClientCetKeyFile) == 0 {
|
if len(device.ServerCaCert) == 0 || len(device.ClientCertFile) == 0 || len(device.ClientCertKeyFile) == 0 {
|
||||||
glog.Error("device use x.509 auth but not set cert")
|
glog.Error("device use x.509 auth but not set cert")
|
||||||
panic("not set cert")
|
panic("not set cert")
|
||||||
}
|
}
|
||||||
|
@ -186,7 +190,7 @@ func (device *baseIotDevice) Init() bool {
|
||||||
serverCaPool := x509.NewCertPool()
|
serverCaPool := x509.NewCertPool()
|
||||||
serverCaPool.AppendCertsFromPEM(device.ServerCaCert)
|
serverCaPool.AppendCertsFromPEM(device.ServerCaCert)
|
||||||
|
|
||||||
deviceCert, err := tls.LoadX509KeyPair(device.ClientCertFile, device.ClientCetKeyFile)
|
deviceCert, err := tls.LoadX509KeyPair(device.ClientCertFile, device.ClientCertKeyFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Error("load device cert failed")
|
glog.Error("load device cert failed")
|
||||||
panic("load device cert failed")
|
panic("load device cert failed")
|
||||||
|
|
|
@ -512,6 +512,11 @@ func CreateIotDeviceWitConfig(config DeviceConfig) Device {
|
||||||
|
|
||||||
device.qos = config.Qos
|
device.qos = config.Qos
|
||||||
device.batchSubDeviceSize = 100
|
device.batchSubDeviceSize = 100
|
||||||
|
device.AuthType = config.AuthType
|
||||||
|
device.ServerCaCert = config.ServerCaCer
|
||||||
|
device.ClientCertFile = config.DeviceCertFile
|
||||||
|
device.ClientCertKeyFile = config.DeviceCertKeyFile
|
||||||
|
|
||||||
|
|
||||||
result := &iotDevice{
|
result := &iotDevice{
|
||||||
base: device,
|
base: device,
|
||||||
|
|
Loading…
Reference in New Issue