技术分享

金山云 > 推荐阅读 > 【技术实践】ssl双向认证

【技术实践】ssl双向认证

发布时间: 2020-01-16 12:01:03



  一、背景知识


  1、名词解释


  ca.key: 根证书的私钥 , ca.crt: 根证书的签名证书


  server.key, server.crt


  client.key, client.crt


  2、生成机制


  1、openssl-> ca.key,ca.crt


  2、openssl-> server.key->server.csr<-ca.crt+ca.key=>server.crt


  3、openssl-> client.key->client.csr<-ca.crt+ca.key=>client.crt


  功能设计:


  第一步,使用openssl生成ca.key -> ca.crt,


  生成server.key -> server.csr , server.csr + ca.key + ca.crt ->server.crt


  第二步,配置 ca.crt, server.key, server.crt 到 mosquito服务器


  第三步,配置 ca.crt, ca.key 到管理控制台,


  通过管理控制台生成client.key -> client.csr,client.csr + ca.key + ca.crt ->client.crt, 并提供 ca.crt + client.crt + client.key 的下载


  3、部署发布


  服务器端: 持有 ca.crt , server.key + server.crt , 如: mosquito


  客户端: 持有 ca.crt , server.key, server.crt , 如:设备


  证书生成端: 持有 ca.crt , ca.key, 如:管理控制台


  二、生成证书


  1 产生CA的key和证书


  使用命令为:


  openssl req -new -x509 -days 36500 -extensions v3_ca -keyout ca.key -outca.crt


  该命令将为CA产生一个名字为“ca.key”的key文件和一个名字为“ca.crt”的证书文件,这个crt就是CA自己给自己签名的证书文件。


  该命令中选项“-x509”表示该条命令将产生自签名的证书,一般都是测试的时候采用。


  命令执行过程中将需要输入国别、省份(或州)、市、Common Name等参数,其中” CommonName”参数,必须是当前机子的IP地址,使用主机名不行。


  2 使用该CA为server签发证书


  使用该CA为server产生证书文件。


  (1)产生密钥文件server.key


  该命令将产生加密的RSA私钥,其中参数”-des3”表示对产生的RSA私钥加密,参数”2048”表示私钥的长度,这里产生的私钥文件“server.key”将在下一步使用,同时在mosquitto程序的配置文件中也需要使用。


  openssl genrsa -des3 -out server.key 2048


  (2)产生证书签发的请求文件server.csr


  该命令将使用上一步产生的“server.key”文件为server产生一个签发证书所需要的请求文件:server.csr,使用该文件向CA发送请求才会得到CA签发的证书。


  openssl req -out server.csr -key server.key -new


  同样该过程需要注意Common Name参数需要填写当前主机的IP地址。


  (3)为mosquitto server产生证书文件:server.crt


  命令:


  openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial-out server.crt -days 36500


  这一步将需要输入CA的密码。该命令将使用CA的密钥文件ca.key,CA的证书文件ca.crt和上一步为mosquittoserver产生证书请求文件server.csr文件这三个文件向CA请求产生一个证书文件,证书文件的名字为:server.crt。


  3 使用该CA为client签发证书


  该过程与1.2类似。


  (1) 产生密钥文件client.key


  openssl genrsa -out client.key 2048


  (2) 产生一个签发证书的请求文件"client.csr"


  openssl req -out client.csr -key client.key -new


  产生证书请求文件时需要第一步产生的私钥文件client.key作为输入。


  (3)CA为mosquitto客户端产生一个证书文件”client.crt”


  openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial-out client.crt -days 36500


  三、配置使用


  1、修改配置


  1.1 修改mosquitto配置文件


  为了使用SSL功能Mosquito的配置文件mosquitto.conf需要修改以下四个地方:


  (1) port 参数,mosquitto官方网站建议在使用功能的时候使用8883端口,如下所示:

  (2) 修改cafile参数,该参数表示CA的证书文件的位置,需将其设置为正确的位置,例如下图所示

  1.2启动mosquitto server


  使用修改后的配置文件启动mosquitto程序,上面修改的配置文件的路径,在mosquitto目录下,因此需要用-c参数指定其位置。


  mosquitto -c mosquitto.conf -v


  2、mosquito.fx


  配置如下:

  注意:不需要填写用户名和密码,可以连接成功。

  1、 注意事项


  (1) 制作签发证书的请求文件时,需要输入Common Name参数,此参数一定为当前主机的IP地址,否则将会显示证书错误。


  (2) 如果不想SSL在身份认证的时候检查主机名(也即上面不检查第1条中CommonName参数),则需要在启动订阅端的时候,加上“--insecure”参数,例如:


  ./mosquitto_sub -h 192.168.4.223 -i 111 -p 8883 -t "111"--cafile/home/jason.hou/ssl/ca.crt --cert /home/jason.hou/ssl/client.crt--key/home/jason.hou/ssl/client.key –insecure


  (3)自测过程中,server端与所有客户端所使用的证书必须由同一个CA签发,否则,将会提示CA不识别的问题。


  作者:梁圣奇


  职务:云服务集团云计算产品中心高级架构师


  专业领域:微服务架构


  专家简介:近二十年软件开发与架构设计经验,深入了解多种软件设计模式,在微服务架构治理、物联网服务平台设计研发等领域拥有丰富实战经验,同时专注技术分享,帮助开发者成长。


以上就是金山云为您带来的【技术实践】ssl双向认证的相关内容,如果您还想了解更多证书,文件,私钥,命令,参数,金山云的相关问题您可以点击页面中的链接进行具体了解。金山云提供云服务器,云主机,云存储,私有云,数据库,物理主机,RDS,KS3,SLB,KEC的全套产品服务,部分产品可以免费体验,而且会有定期的优惠、代金券等相关的活动。成立7年来,金山云始终坚持以客户为中心的服务理念,提供安全、可靠、稳定、高品质的云计算服务。以上是对【技术实践】ssl双向认证相关介绍,如果觉得对您有帮助可以收藏。欢迎随时查看。
以上就是金山云为您带来的推荐阅读的全部内容,如果还想了解更多内容可访问金山云官网www.ksyun.com了解其它资讯。
*免责声明:部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。