我想使用客户端证书身份验证连接到ssl://iot.eclipse.org:8883。
我如何获得CA证书?
我是否需要使用提供的CA证书生成自己的客户端证书。 或者客户端证书也与CA证书捆绑在一起。
答案 0 :(得分:0)
使用openssl
检查iot.eclipse.org的证书是否来自Let's Encrypt项目。
$ openssl s_client -showcerts -connect iot.eclipse.org:8883CONNECTED(00000003)
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/CN=iot.eclipse.org
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
因此,您应该可以使用大多数现代操作系统/应用程序中设置的标准CA来检查此证书是否有效。
由于显而易见的原因,您将无法获取CA证书/私钥以生成您自己的客户端证书,并且他们不会颁发客户端证书(并且假设eclipse.org代理已设置为进行身份验证具有相同CA的客户,它没有必要)。
对此代理进行身份验证也没有意义,因为您无法设置ACL来控制哪些用户可以订阅/发布到特定主题,因为它是公共演示代理。如果您想要保护访问权限,则必须运行自己的公共经纪人
编辑:您不想进行客户端证书身份验证,您只想验证服务器证书,这是非常不同的。
要使用mosquitto_pub
或mosquitto_sub
执行此操作,您必须指定CA证书或多个证书目录的路径,以便为连接启用ssl / tls。如果您使用的是私有CA,则可以指定单个CA证书,但由于iot.eclipse.org代理使用的是众所周知的公共CA,因此您需要指定CA证书系统集合的路径。
在/etc/ssl/certs
的Linux上,您将按如下方式发布:
mosquitto_pub -h iot.eclipse.org -p 8883 --capath /etc/ssl/certs/ -t testing/ben -m foo
答案 1 :(得分:0)
如果证书就像是证明您身份的护照,那么CA就像护照办公室(1)。您可以将Verisign,Entrust等视为护照办公室。 CA证书类似于护照办公室,提供检查护照是否有效的方法。
为了证明自己的身份,任何两方(阅读服务器和客户端)都可以使用证书。要验证一方(读取服务器)的真实性,您需要CA证书。 Linux系统(Ubuntu)在 / etc / ssl / certs 中保存常用的CA证书。
只有在需要向服务器验证身份时才需要客户端证书。这里的服务器是iot.eclipse.org,它不会要求客户端身份验证,所以你不需要客户端证书。
因此,要与服务器安全通信(读取TLS),您可以使用系统中存在的CA存储(Ubuntu),如下所示。
mosquitto_pub -h iot.eclipse.org -p 8883 -t my_topic -m my_message --capath /etc/ssl/certs/