首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保莫斯科的TLS通信安全

确保莫斯科的TLS通信安全
EN

Unix & Linux用户
提问于 2019-12-17 14:26:36
回答 1查看 91关注 0票数 0

我有一个简单的MQTT摩斯基托服务器,我试图使其安全。

Mosquitto.conf:

代码语言:javascript
复制
log_type all
password_file /etc/mosquitto/mosquitto_users.txt
pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

port 8883

cafile /etc/mosquitto/ca_certificates/ca.crt
keyfile /etc/mosquitto/ca_certificates/server.key
certfile /etc/mosquitto/ca_certificates/server.crt
tls_version tlsv1

在当前服务器上,我生成了:

CA证书

代码语言:javascript
复制
openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

服务器证书:

代码语言:javascript
复制
openssl genrsa -out server.key 2048
openssl req -new -out server.csr -key server.key

自签名服务器证书:

代码语言:javascript
复制
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 720

根据msoquitto.conf配置放置的所有所需文件。

我使用以下命令来使用ca.crt证书订阅和发布消息。

代码语言:javascript
复制
mosquitto_sub -h 192.168.1.8 -t sensor --cafile ca.crt -p 8883 -d
mosquitto_pub -h 192.168.1.8 -t sensor --cafile ca.crt -m "test" -p 8883 -d

一切都很好。但是男人之间的通讯安全吗?我应该把服务器放在互联网上,而没有人会获取信息吗?

EN

回答 1

Unix & Linux用户

发布于 2019-12-17 15:00:54

当它像这样工作的时候总是有点吓人。

如果你想测试它,你可能想让它失败。如果有人试图欺骗您的服务器,他们将无法使用由您(自签名) CA证书签名的证书。因此,如果客户端使用的CA证书与用于签署服务器证书的证书不匹配,您可能想看看会发生什么。

因此,要测试客户端mosquitto_submosquitto_pub是否正确检查证书,可以尝试生成一个全新的“虚拟”CA证书。不要在服务器上安装这个。但是,尝试在mosquitto_submosquitto_pub命令中使用它:

代码语言:javascript
复制
mosquitto_sub -h 192.168.1.8 -t sensor --cafile dummy_ca.crt -p 8883 -d
mosquitto_pub -h 192.168.1.8 -t sensor --cafile dummy_ca.crt -m "test" -p 8883 -d

如果您的客户端与服务器安全地通信,那么这将失败。这是因为您的服务器的证书不会被客户端期望的CA证书签名。如果它适用于虚拟证书,那么您就有一个问题,您需要调查原因。

公钥加密使用密钥对(公钥和私钥)工作。私钥是保密的,从不与任何人共享。使用公钥加密的任何内容只能用私钥解密。即使是公钥也不能用来解密用公钥加密的东西.你无法从公钥中计算出私钥。

因此,要跨加密通道进行通信,设备(客户端和服务器)都向对方发送自己的公钥,将自己的私钥保密。黑客是否能得到这些并不重要,因为它们不能被用来解密任何东西。然后,客户端用服务器的公钥加密所有东西,服务器用客户端的公钥加密所有东西。只有服务器才能解密它接收到的消息,因为它是唯一有私钥解密消息的服务器。同样,客户端是唯一能够解密发送给它的消息的人。

证书仅用于确保黑客不能通过伪装成服务器来执行“中间人攻击”。证书包含三个关键信息:

  1. 服务器的名称(它是域名)
  2. 服务器的公钥
  3. CA的签名证明此证书是真实的。

这样,黑客就不能假装是您的服务器,因为他们必须:

  • 有权访问服务器的私钥来解密您发送的所有内容。他们不能得到这个,因为它总是被服务器保密,从不泄露给任何人
  • 向您发送一个证书,说明他们自己的(假的)公钥是正确的服务器。他们无法创建假证书,因为他们无法获得CA签名
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/557702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档