我试图连接到使用基于证书的身份验证的mosquitto代理。
下面的mosquitto剪切配置:
LIKE
它的工作原理,因为我能够使用以下命令在远程机器中创建pub / sub:
listener 8883
cafile /etc/mosquitto/ca_certificates/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate true
或通过以下方式打开SSL套接字:
mosquitto_pub -t "/test" -m "test" --cafile ca/ca.crt --cert certs/client.crt --key certs/client.key -p 8883 -h server.com
mosquitto_sub -t "/test" --cafile ca/ca.crt --cert certs/client.crt --key certs/client.key -p 8883 -h server.com
但是当我尝试使用GO Paho客户端时,我的工作并不起作用:
配置加载不起作用,因为openssl s_client -connect server.com:8883 -CAfile ca/ca.crt -cert certs/client.crt -key certs/client.key
无法加载证书(此行configureMqttConnection()
)并且tls.LoadX509KeyPair(c.config.CertFile, c.config.KeyFile)
失败,因为客户端无法发送握手中的证书。
我想问题可能是LoadX509KeyPair所期望的证书不是我生成的证书。我的证书上写着“开始信任的证书”和“#39;并且不被信任和认证或类似的东西。如果这是我不知道如何创建正确的证书。
我在下面使用此GO代码(代码以connect(backOff int)
开头:
GO start()
我认为问题是我
答案 0 :(得分:2)
启动console.log()
的证书是OpenSSL“可信证书”文件,该文件是Go加密库无法理解/解析的格式。当您生成证书时,您是否使用x509 man page上“信任设置”下的任何选项?
Go TLS库在文件开头只有looking BEGIN TRUSTED CERTIFICATE
,其他任何内容都会引发错误。