[OpenBMC] LDAP 设定(三) - LDAPS(LDAP over TLS)

news/2024/10/4 15:31:39

终于到了最后一个部分 LDAPS, 这部分我们会依序介绍

  • TLS的原理(这边会补充密码学基础)
    • 非对称式加密 vs 对称式加密
    • 数位签章
    • 数位凭证
    • TLS 握手(hankshake)
  • 如何产生凭证
  • 上传凭证到LDAP Server
  • 上传凭证到BMC
  • 有可能会遇到的问题 (补充我遇到的问题)

 

TLS的原理

对称式加密 vs 非对称式加密

密码学中会根据加密和解密的金钥是否相同,将加密法分为非对称是加密和对称是加密,非对称就是指加解密的金钥不相同,对称式就是加解密金钥是同一把

对称式加密

加解密金钥同一把,我们这边可以举个例子,例如底下Alice 和 Bob都有同一把金钥 (key = 2),他们有一个已知的加密演算法,将文字转乘ASCII 再乘上Key 就是密文(ciper text),所以解密演算法就是将密文(ciper text)除上key 再转成文字就能的到原文了

 

比较有名的演算法就是DES,应用的话就像TLS 中,双方会透过某些方式产生一组彼此都知道的Session Key,之后所有讯息都会透过这把Session Key 来做加解密

非对称式加密

非对称式加密中会有两把金钥,分别是私钥(private key)和公钥(public key),如以下的RSA范例(select p=3, q=11),Alice 先产生一组金钥,她会将其中的公钥先给了Bob,Bob用手上的公钥来加密一段讯息给Alice,这段讯息只有Alice手上的私钥能解开

 

上面的范例应该能体会非对称是加密的神奇之处,先说缺点就是"加解密速度比对称式慢很多",但它的神奇之处衍伸出两个很著名的应用

  • Key distribution (金钥分发)
  • Digital Signature  (数位签章) 

后来因为数位签章有中间人攻击的风险,Digital Certificate (数位凭证)就此诞生

Key distribution (金钥分发)

前面我们有提到TLS最后目的是透过某个方法来产生一组session key,来对之后传输的讯息做加密,这边的"方法"就是指"金钥分发",如以下范例

  1. Bob先产生一组Session Key, 用Alice给的公钥加密
  2. Alice收到之后,用私钥解密得到session key
  3. 之后双方讯息都是session key做加密

 

Digital Signature  (数位签章) 

网路上的讯息要怎么证明传送者是谁呢?数位签章就有点像是个人签名,签署这份讯息是由你送出来的,如以下范例,如果Alice 在讯息后面加上它的数位签章,这样Bob就可以分辨哪个是由Alice传送过来的

 

底下是数位签章制作方法和原理

  1. Alice 先将要传送的讯息M经过杂凑函数H产生H(M)
  2. 将H(M) 用私要加密,产生数位签章PA(H(M))
  3. 将数位签章PA(H(M))加到要传送的讯息M后面 (数位签章的长度是固定的)
  4. Bob收到讯息后,将数位签章PA(H(M))和讯息M'分开
    1. 将讯息M'经过杂凑函数H产生H(M')
    2. 将数位签章PA(H(M))用公钥解密,取得H(M)
  5. 比对H(M)和H(M') 是否相等,如果相等,表示讯息没有被窜改,而且是Alice传送过来的

 

简化一下沟通流程,大概就是以下这样

 

但这样其实会有中间人攻击(Man-in-the-middle attack)的风险,就是Bob怎么能确定一开始拿到Alice的公钥是真的呢? 

 

Digital Certificate (数位凭证)

为了解决这个问题,就出现了certificate authority (CA),一个来颁发凭证来证明你手上拿到的公钥是没问题的单位,这边继续用alice和bob来举例

  1. Alice 将她的个人基本讯息(CSR)和它的公钥拿给CA去签署(signed)
  2. CA颁发凭证(Certificate)给Alice
    1. 将Alice的讯息和公钥拿去做杂凑
    2. 用CA自己的私钥加密做成数位签章
    3. 然后加在Alice提供的讯息后面
  3. Alice将凭证传送给Bob
  4. Bob将凭证中的创建者(Issuer) xxCA解析出来,拿xxCA的公钥来看是否为这个真的是由其颁发,且凭证无损毁

 

TLS 握手(hankshake)

因为这篇文章是为了OpenBMC写的,所以这边我画了一张BMC在做LDAPS的时候hankshake的模拟图,

    1. Client送hellp给Server端,有些会传送自己的凭证(这个看情况)
    2. Server端收到Hello后,回传它的凭证
    3. 验证server 凭证是否合法,产生session  key,连同之后这把key要搭配的对称加密演算法一起传给server

      补充,在某些session key产生的演算法中,会用到Server的公钥(public key) 和client的私钥(private key),所以这就是BMC要上传的LDAP凭证中,必须要包含private key的原因
    4. 确认Server那边讯息无误之后,所有讯息都会透过session key做加解密

 

如何产生凭证

这个部份OpenBMC已经有教学文件 ,How to configure the server TLS certificates for authentication

文章中有提到产生CSR,这部分可以透过OpenBMC的Create CSR功能来做,我这边是透过webUI,也可以透过Redfish,结果都一样的

 

 

分別做好signingReqClient.csr(LDAP), signingReqServer.csr(HTTPS),就按照文章(How to configure the server TLS certificates for authentication

)的步骤继续完成:

openssl x509 -req -extensions my_ext_section -extfile myext-server.cnf -days 365 -in signingReqServer.csr -CA CA-cert.pem -CAkey CA-key.pem -CAcreateserial -out server-cert.pem

openssl x509 -req -extensions my_ext_section -extfile myext-server.cnf -days 365 -in signingReqServer.csr -CA CA-cert.pem -CAkey CA-key.pem -CAcreateserial -out server-cert.pem

 

但有几个地方需要注意,server certificate 的 cn 要填LDAPS server 的 hostname或IP,不知道LDAP server的hostname可以下已下指令

  1.  $ hostname
  2.  IRIS001

client certificate 的 cn 这边填Ldap 的 admin user

上传凭证到LDAP Server

产生一个设定档certinfo.ldif,填入刚刚产生的cert放置路徑

 

[POST] /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate
{"CertificateString": "-----BEGIN CERTIFICATE-----\nMIIDnTCCAoWgAwIBAgIUEZOkf69SVwaLa9l6Tp/gQMJioD4wDQYJKoZIhvcNAQEL\nBQAwXjELMAkGA1UEBhMCVFcxDzANBgNVBAgMBlRhaXdhbjEPMA0GA1UEBwwGVGFp\ncGVpMQ4wDAYDVQQKDAVqYWJpbDEMMAoGA1UECwwDYm1jMQ8wDQYDVQQDDAZUZXN0\nQ0EwHhcNMjExMDIxMDI1NzA4WhcNMjQwNzE3MDI1NzA4WjBeMQswCQYDVQQGEwJU\nVzEPMA0GA1UECAwGVGFpd2FuMQ8wDQYDVQQHDAZUYWlwZWkxDjAMBgNVBAoMBWph\nYmlsMQwwCgYDVQQLDANibWMxDzANBgNVBAMMBlRlc3RDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAKK1H9nIzIPHRRfVKPTmr1uwP8c23f/Oi+t1GVP3\nKijL/9KKDGwVf93F7wd1UWoEwWF5Hdfk84IYYe6skA5rh9RMWdQPcE9SVyDWkFTt\n/aMP/Ngl6l3zaqniW9uawa1ywXrEOdwRRpZwaizCVS0OxWaZn7mW9/aloqqTqf2q\nb4KX04x2Rdrnw3FWCnEpGaiaDc76bdeba0yg0/Lq1SFeYYuOYTcTIWOKB9BJyGhw\nD5G++QmwBUNK5s/ENzJZxnywX9yfYaARUURr19fo3pTCNMzBWOewt+PykCLTw0Wt\nmRvWpFwaIUgLaClrKkXh+9GcuEJUIRItpu06n/2nYtMAlhcCAwEAAaNTMFEwHQYD\nVR0OBBYEFPdM+K8hgEdU8/4rrFD5cjAjEgGDMB8GA1UdIwQYMBaAFPdM+K8hgEdU\n8/4rrFD5cjAjEgGDMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB\nAExEwJ1JD98pu5TW0aMi0L6mBMIayBaq68K9cJhB1xfA33buQIk54cOK7FXd9sBp\n+KY39vHNuYMp+J9tg/mqxS3d3/v5IcOvg96hRcHcPczWUmanNJuX29GZSoVkjMTF\n564EIfC6r0u9jbavlJsU5RuL7WSOgolvLa42PM44ShqfNIaKAi6hQzIVShhcG1UM\nulW1Ai6+Ih7yKeLVtkVTaDgSXODCTAPnXZI5qxWVWu/BU2CkllahdZ2Pna6mlvPv\n42po4X2MlBAGvy0ShwTxWA3QYqj1A87HpNjSqYLIwLWTE8S1+csWwgLGTMXpve0k\ncRgNpwA/3NURwmCvGs8yUyg=\n-----END CERTIFICATE-----\n","CertificateType": "PEM","CertificateUri": {"@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/1"}
}

 

 

LDAPS certificate 上传 client-cert.pem 和 client-key.pem 的合并档案

(因为产生Session Key的运算过程中会用到private key,但private key并不会传送给ldap server),合并方法我是直接复制贴上,你也可以 echo client-cert.pem client-key.pem > Ldap.pem

 最后上传给BMC

[POST]/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate
{"CertificateString": "-----BEGIN CERTIFICATE-----\nMIIDrTCCApWgAwIBAgIUPJjMDmZ/Kn44kdLol7NaAoDyFAYwDQYJKoZIhvcNAQEL\nBQAwXjELMAkGA1UEBhMCVFcxDzANBgNVBAgMBlRhaXdhbjEPMA0GA1UEBwwGVGFp\ncGVpMQ4wDAYDVQQKDAVqYWJpbDEMMAoGA1UECwwDYm1jMQ8wDQYDVQQDDAZUZXN0\nQ0EwHhcNMjExMDIxMDI1ODIwWhcNMjIxMDIxMDI1ODIwWjBdMQswCQYDVQQGEwJU\nVzEPMA0GA1UECAwGVGFpd2FuMQ8wDQYDVQQHDAZUYWlwZWkxDjAMBgNVBAoMBWph\nYmlsMQwwCgYDVQQLDANibWMxDjAMBgNVBAMMBWFkbWluMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAhpU78FV7loXU7uwT2fgMqVNrVac6OA80SoOxwCWO\nOR8WL3Z7R51ZIBgDe2WcC1mQGNO8ymt0YvcZInWJGPKlrSSIxGTcgPh36ZUx8WZw\nDjC05LaOoyPa/av/snkmsWHKCWd4tXALltb7fs+agaNPThBE8gqI7L6QvBExQgZf\nRaBLPZ6lizyb+ovEYOzY/wPh4VCYSCz+41eOEHxSno6hN4X8h7dGJwYRTMAt+Dys\nrCBIpTvKSJvRkVhh8SgEr4EV+izSEelbCMJZg3uv2aeabxpWYK7x4L4r8OWfQi2P\ndW5SkAUFjg6/tf16ZaOFUY4Ro3NxA1D49nxJhkLP8aBU+wIDAQABo2QwYjALBgNV\nHQ8EBAMCA4gwEwYDVR0lBAwwCgYIKwYBBQUHAwIwHwYDVR0jBBgwFoAU90z4ryGA\nR1Tz/iusUPlyMCMSAYMwHQYDVR0OBBYEFMlmWZNjqmmMNFfGJRXvEfxDCL5jMA0G\nCSqGSIb3DQEBCwUAA4IBAQCYBY3cY78GmOqTbKByGXBwar5Nb7O6xYeQb/f3fJAJ\nJYLI5jZnKWbixo4P6jl34+21WGxivT2GxFC4m9qdB8YBkbhvtk5dpMynoGmKrC9d\nn+OamBUuHC8yw6zrGywauD1XLnwy+eUULg51gOFvvM4XVqg44pRwzGwnzvGSmGDq\n2vAD5KWglcJ9d0nMLRlCW70bZbgG46ifRJvDxATp69HL2aS1tpwA2xJz1akkCzn8\nHzfZD02D1xIpAOTIf5pevZakhBsdZKiJeobkyoVCI1/L3mJX/4PFIyxbVr5AchO6\nQXmVeNx5LQ09afIVI/FlQcf4EWtza/E8DAl4vO31NuFA\n-----END CERTIFICATE-----\n-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCGlTvwVXuWhdTu\n7BPZ+AypU2tVpzo4DzRKg7HAJY45HxYvdntHnVkgGAN7ZZwLWZAY07zKa3Ri9xki\ndYkY8qWtJIjEZNyA+HfplTHxZnAOMLTkto6jI9r9q/+yeSaxYcoJZ3i1cAuW1vt+\nz5qBo09OEETyCojsvpC8ETFCBl9FoEs9nqWLPJv6i8Rg7Nj/A+HhUJhILP7jV44Q\nfFKejqE3hfyHt0YnBhFMwC34PKysIEilO8pIm9GRWGHxKASvgRX6LNIR6VsIwlmD\ne6/Zp5pvGlZgrvHgvivw5Z9CLY91blKQBQWODr+1/Xplo4VRjhGjc3EDUPj2fEmG\nQs/xoFT7AgMBAAECggEACYYwkMmdCesu15TU/D5Lkxc6tWm0ux0I6Ygzpd/0zS/r\nXTnNFFxtg+Qju4Po1erJ5k2a3jLsZ21lqAki6pL9cURwjIBcOQ7lkGcpn0rfojlz\nMFnQcwvbwe/Zgc6E70MbcoftaQNk1Ef+G1NjGCX5BSUJLS+TPqZnO+I/TcvvN/S7\ncL+jP+9mTZ+U4ZsuGtW7T3yw3JpgAZ2jdNt5VB4sXilk1246btl/7kYeJqYEeK/K\nsLYJ+t4JhjBIq1Wpeblj2YHLfpSKxCdooBFiO+Pks5misk4Q1Y7ikvgMAKfKbmnm\nyrm9MN4yZ9ALKQAIBjz5YDjmvK8lbLg2xpJmoe30MQKBgQC9L9efhFTX2VWdpE+D\ngvVty3a8ZxvasG4PN9HCFlRrD+wfhAkU7DIJM6tfZoWkCo9txirBB2NTTUwIT/i8\n6Jb9ctZMdfHx0520vwxHdo3AduqE/z/RUk7YE3OWcM6AcZ7OxbqW3vkkaN15z5nG\nTORpFiKDW1Kv1lOEyxZ3HLw+sQKBgQC2HLc7u88zvah94/RyZzBtVthwpIW+Ow+6\nL/bZNbMmKh8n+kwKLXJZUjQfoY8en664LAWxxsvuOHerPmcxkwlga64ipNTZrjRL\n2aBc2wN0whY+ytaOCW7wF7MCxkGvYfFQyv2nZ6JSBM3Mss0KNZZNNbL79ZlTAGC4\nBiQLWSZxawKBgDpcXN73mpivkcq8mk7Oglmpb2p1QFF5JaqKJKoD62zPj561Q3vx\n1Qmjp9UZMlbFbzOE80FyvwA+kxrpWKkl8xYia9tQcx+PkVHlsasF9nqN9JCskQpI\nosvjTD/3cqyK4FuXAZVzGVZTByeBlEVpCPkl++WbsWlO65rGb5q1AZkxAoGAWsS7\nS2mTn+1jAsRQvYjTKVxE6vgFtUhI0XtApQjP7zDFcK6fod7/BKglVLK43AGpGyDO\nAcrdMDIy60ZiNuJbpRRmqdvQP2NFq5ygAkgjU9m9LrT49bib881MKxDYAmtl1Ogo\nP302+Xxtex6Pdgw5iug9+rlyH12r120wH/viXlsCgYBtEPGxwQuI7TSHvRi1Z6W0\nKPlEDRFidOWHRlPoqfUegCLgwIHvo6Jo5wDKRtmfDpbZovdDMvuvOM4KID5IeQas\nZkdKqtq2Ik15Tr2HRSiriktZYgO49gVHrfN59xTT1n2XIqBSvXQF3EOJ+7kXutzx\nzAFxrjvZ/QcxoBvCv/AqlA==\n-----END PRIVATE KEY-----\n","CertificateType": "PEM","CertificateUri": {"@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1"}
}

 

啟用

这边要注意的是LDAP的server URI 要填hostname: "ldaps://IRIS001" 或是 IP (要和CERT上面的CN一样)
Web 设定

 

 BMC端设定完后,就能用LDAPS user 登入BMC了

 

有可能会遇到的问题 (补充我遇到的问题)

当你登入不进去的话,可以下journalctl 来查看error log,如果log太多,可以先清除 journalctl --vacuum-time=1seconds,再测试一次

certificate is not yet valid

 

 原文链接:https://blog.csdn.net/yeiris/article/details/122747683

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

支持多样化同步需求的增量数据同步方案,了解一下!

增量数据同步方案是一种在数据管理中广泛使用的技术,它主要目的是高效地同步源数据和目标数据之间的数据变化。目前越来越多的企业要求内部各种业务数据在多台服务器之间、多个数据中心之间,乃至多云和本地之间调度和同步,增量数据同步也成为越来越普遍的需求。企业IT部门管…

[OpenBMC] LDAP 设定(二) - openldap 伺服架设与BMC的设定

这篇会接续介绍ldap server的架设和redfish/web设定,因为openbmc支援了 openldap 和 windows 的ad,这篇选用OpenLDAP server架设为范例 在Ubuntu上架设OpenLDAP Server OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol)的开源实现。通常用来管理公司组织的…

宏景HCM 任意文件读取漏洞

漏洞复现: 1、读取/etc/passwd http:url/servlet/OutputCode?path=RNcrjWtNfJnkUMbX1UB6VAPAATTP3HJDPAATTPPAATTP3HJDPAATTP 其中path字段加密通过下面工具来实现 工具地址:https://github.com/wafinfo/DecryptTools读取成功

保密U盘应该具备哪些功能,从而提高数据安全性?

保密U盘和普通U盘在基本功能上是相似的,都是用于存储和传输数据的USB闪存驱动器。但是,保密U盘针对数据安全性有额外的设计和功能,主要区别包括:加密技术:保密U盘通常内置了加密技术,如AES加密,确保存储在U盘上的数据即使被非法访问也无法读取。 访问控制:安全U盘可能具…

APP自动化环境搭建与安装(Windows)

一、Appium简介 Appium实现APP自动化测试的脚本开发环境一般包括: appium服务端:appium server GUI appium客户端:appium inspector 手机或者模拟器(OR真机):夜神模拟器 pycharm:自动化工具 python:自动化开发语言 Android SDK:主要用于adb安装与aapt安装 java:开发基…

cc3链:TrAXFilter在构造方法中加载字节码

cc1的终点`InvokerTransformer`如果被拉黑了怎么办?这就是cc3出现的机缘cc1的终点InvokerTransformer如果被拉黑了怎么办? 这就是cc3出现的机缘 回顾一下cc1的org.apache.commons.collections.functors.InstantiateTransformer InvokerTransformer的transform方法会接受一个对…

Go语言什么时候该使用指针 与 指针使用分析

Go语言什么时候该使用指针 与 指针使用分析 原创 疯子 Go语言圈 2024-06-12 08:31 广东Go语言圈 Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长 161篇原创内容公众号最近在学习Go…

手把手教你搭建Docker私有仓库Harbor

1、什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署在本地云环境中,用于组织内部开…