Wro*_*ngs 3 ssl amazon-ec2 mqtt
我想在 AWS EC2 实例上设置 MQTT 代理并使用 TLS 连接到它。
我已经运行了实例,并且可以使用普通未加密的 MQTT 从本地计算机成功连接(发布/订阅)到 Mosquitto。使用 TSL 时,出现错误tlsv1 alert unknown ca。
经过几个小时的阅读和尝试不同的教程和示例后,我仍然无法弄清楚这一点。这就是我所做的,根据我对证书和加密的(有限)理解应该有效:
假设我的 EC2 实例在 hostec2-x.compute-1.amazonaws.com和 IP上可用54.1.1.1。我的本地网络 IP 是192.77.77.77。
通过 SSH 连接到 EC2 并使用目录中的OwnTracksgenerate-CA.sh生成证书~/iot。我生成颁发的证书
HOSTLIST="ec2-x.compute-1.amazonaws.com" IPLIST="54.1.1.1" bash ./generate-CA.sh ec2-x.compute-1.amazonaws.com
证书生成结果是一堆文件,即
ca.crt ca.key ca.srl ec2-x.compute-1.amazonaws.com.crt ec2-x.compute-1.amazonaws.com.csr ec2-x.compute-1.amazonaws.com.key
现在我准备好配置我的经纪人mqtt.conf:
# mosquitto.conf 听众 8883 pid_file /var/run/mosquitto.pid 持久真实 persistence_location /var/lib/mosquitto/ cafile ./ca.crt certfile ./ec2-x.compute-1.amazonaws.com.crt 密钥文件 ./ec2-x.compute-1.amazonaws.com.key
是时候启动经纪人了mosquitto -c mqtt.conf。
为了转至经纪人,我将 的内容复制ca.crt到我的笔记本电脑并运行mosquitto_sub -h ec2-x.compute-1.amazonaws.com -p 8883 --cafile ca.crt -t +.
我在订户端得到的是
错误:发生 TLS 错误。
服务器确实意识到正在发生连接尝试,但做出反应
1475320985:来自端口 8883 上的 192.77.77.77 的新连接。 1475320986:OpenSSL 错误:错误:14094418:SSL 例程:SSL3_READ_BYTES:tlsv1 警报未知 ca 1475320986:OpenSSL 错误:错误:140940E5:SSL 例程:SSL3_READ_BYTES:ssl 握手失败 1475320986:客户端上的套接字错误,断开连接。
当我写下这篇文章时,我意识到在我的最后一次尝试中(遵循上面列出的所有步骤),我忘记在ca.crt尝试将文件订阅到代理之前将文件复制到客户端。
由于ca.crt在客户端上安装了错误的文件(与之前的尝试不同),上述unknown ca错误很有意义。将文件复制到客户端后,它成功通过 TLS 连接到 EC2 上的代理。
我想我仍然会发布这个问题,因为我花了几个小时才弄清楚所有步骤中的所有细节,并且对于遇到类似问题的其他人来说可能会派上用场。
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |