隨筆-124  評論-194  文章-0  trackbacks-0

          基本概念
          LDAP是以樹方式組織的數據庫。每個節點可以有什么值是通過類來定義。
          LINUX或者其它應用的認證就是來BIND LDAP樹上的節點,如果能夠BIND,就算認證成功。
          要改變LINUX認證方式,需要讓名字服務NSCD能夠到LDAP查找用戶,這需要nss_ldap.so。
          得到用戶后,再到LDAP去認證,這需要pam_ldap.so實現。

          公私鑰:公鑰可以唯一解密私鑰加密過的數據,反之亦然。
          SSL過程:需要兩對公私鑰(P1,V1),(P2,V2),假設通信雙方是A和B,B是服務器,A要確認和它通信的是B:
          A->B: hello
          B->A: 用V2加密過的P1(即用戶證書,A就用P2解密出P1)
          A->B: ok
          B->A: 用V1加密的一段信息
          A->B: 用P1加密一個自動生成的K(用之前的P1解密成功這段信息則認為B是可信的了)
          B->A: 用K加密的數據(之后兩對密鑰功能結束,由K來加解密數據)
          這里,P2就是第3方的CA證書,由于非對稱加密很慢,所以公私鑰只是用來保證K的傳送安全,之后通信是用K的對稱加密算法來保證。


          需要安裝的組件
          Berkeley DB 4.2.52 or later - http://www.sleepycat.com/(僅服務端)
          NSS_LDAP 2.2.X or PAM_LDAP 1.6.X or later – http://www.padl.com/(僅客戶端)
          OpenSSL 0.9.7e or later – http://www.openssl.org/

          OpenLDAP 2.3.XX or later - http://www.openldap.org/(僅服務端)

          OpenSSH: http://www.openssh.org/

          #?cd?/var/tmp
          #?tar?xvf?openssh-
          3 .X.XpX.tar
          #?cd?openssh-
          3 .X.XpX
          #?./configure?--prefix
          = /usr?--with-pam?--sysconfdir = /etc/ssh?--with-ssl-dir = /usr



          需要修改的文件
          服務器端:
          /etc/openldap/slapd.conf

          include???/etc/openldap/schema/core.schema
          include???/etc/openldap/schema/cosine.schema
          include???/etc/openldap/schema/inetorgperson.schema
          include???/etc/openldap/schema/nis.schema


          loglevel?-
          1

          access?to?attrs
          = shadowLastChange , userPassword
          ??????by?self?write
          ??????by?*?auth

          access?to?*
          ??????by?*?read

          TLSCipherSuite??HIGH:MEDIUM:+SSLv2
          TLSCACertificateFile?/etc/openldap/cacert.pem
          TLSCertificateFile?/etc/openldap/slapd-cert-ldap1.pem
          TLSCertificateKeyFile?/etc/openldap/slapd-key-ldap1.pem

          TLSVerifyClient?never?

          database????bdb
          suffix????????
          " dc=example,dc=com "
          rootdn????????
          " cn=Manager,dc=example,dc=com "
          rootpw????????secret
          directory???????????????/var/lib/ldap
          index????objectClass????eq


          客戶端:
          /etc/ldap.conf

          host?ldap1.example.com
          base?dc
          = example , dc = com
          ssl?start_tls
          tls_cacertfile?/tmp/cacert.pem

          ??????/etc/pam.d/system-auth

          /etc/sysconfig/authconfig

          USEDB = no
          USEHESIOD
          = no
          USELDAP
          = yes
          USENIS
          = no
          USEKERBEROS
          = no
          USELDAPAUTH
          = yes
          USEMD5
          = yes
          USESHADOW
          = yes
          USESMBAUTH
          = no


          /etc/nsswitch.conf


          /etc/hosts

          127.0.0.1 ???????MD_Mother_HDA?localhost
          10.56.28.33 ?????ldap1.example.com

          /etc/ssh/sshd_config

          PasswordAuthentication?yes

          ChallengeResponseAuthentication?yes

          UsePAM?yes

          Subsystem???????sftp????/usr/libexec/sftp-server



          需要重啟的服務
          service nscd restart???????
          service sshd restart

          另外,這個文件是LDAP命令使用的,不是系統認證所需:
          /etc/openldap/ldap.conf

          開始的時候可以不要SSL認證,只需要注釋掉ldap.conf中start_tls一句即可。另外,SSL要求驗證服務器,所以一定要在/etc/hosts文件里加入服務器完整名字,并與SSL證書中一致。

          posted on 2006-11-28 15:56 我愛佳娃 閱讀(7391) 評論(5)  編輯  收藏 所屬分類: 服務配置

          評論:
          # re: LDAP+OpenSSL集中認證配置 2007-03-30 18:00 | 我愛佳娃
          如果設置了不存在的IP為LDAPSVR,會使客戶端認證很慢。改配置也沒用。但只要能PING通的,即使沒裝也會正常了。  回復  更多評論
            
          # re: LDAP+OpenSSL集中認證配置 2008-01-08 19:43 | ykzj
          公私鑰:公鑰可以唯一解密私鑰加密過的數據,反之亦然。
          SSL過程:需要兩對公私鑰(P1,V1),(P2,V2),假設通信雙方是A和B,B是服務器,A要確認和它通信的是B:
          A->B: hello
          B->A: 用V2加密過的P1(即用戶證書,A就用P2解密出P1)
          A->B: ok
          B->A: 用V1加密的一段信息
          ^^^^^^^^^^^^^^^^^^^^B有A的私鑰?


          A->B: 用P1加密一個自動生成的K(用之前的P1解密成功這段信息則認為B是可信的了)
          B->A: 用K加密的數據(之后兩對密鑰功能結束,由K來加解密數據)
          這里,P2就是第3方的CA證書,由于非對稱加密很慢,所以公私鑰只是用來保證K的傳送安全,之后通信是用K的對稱加密算法來保證。  回復  更多評論
            
          # re: LDAP+OpenSSL集中認證配置 2008-01-09 20:21 | 我愛佳娃
          你理解反了,這是是A要確認通信方是B,做個類比,B就相當于銀行,A就是客戶端,A一定要確認B是真正的銀行才能發送自己的用戶名和密碼。

          B->A: 用V1加密的一段信息
          V1是B的私鑰,它用V1加密一段信息給A,A用之前的P1一解,能解開那就確定是B無疑了(因為公鑰可以唯一解密私鑰加密過的數據)。A是沒有任何私鑰的,它唯一要有的就是CA證書,即P2。  回復  更多評論
            
          # re: LDAP+OpenSSL集中認證配置 2008-10-20 14:42 | kudiejlq
          對以下內容的疑問:

          SSL過程:需要兩對公私鑰(P1,V1),(P2,V2),假設通信雙方是A和B,B是服務器,A要確認和它通信的是B:
          A->B: hello
          B->A: 用V2加密過的P1(即用戶證書,A就用P2解密出P1)
          .......

          第二步,即B->A這一步,感覺這里有些問題。v2是CA的私鑰,如果p1是經由v2加過密的,那么考慮一種這樣的情況:客戶瀏覽器中沒有此CA的根證書,即沒有p2會怎么樣? 它根本就不能解密出p1, 也無從知道是哪個ca頒布的證書。即使有該CA的根證書,在不知道P1的內容前,它怎么知道用這個P2(而不是P3或者P4)去解密出P1?所以,我認為CA沒有加密P1,只是用V2對P1進行了簽名。

          期待繼續討論:kudiejlq@126.com
            回復  更多評論
            
          # re: LDAP+OpenSSL集中認證配置 2008-10-27 17:16 | 我愛佳娃
          你瀏覽SSL認證的網頁時,如果事先沒有安裝證書P2,瀏覽器會下載,并彈出對話框問你是否信任此證書的。
          而如果你訪問銀行服務,它會事先給你一個號碼或者導入證書。
          V2對P1所謂的簽名,就是執行了加密,保證只有P2能夠解出來,這是公私匙存在的基礎:公鑰可以唯一解密私鑰加密過的數據,反之亦然。  回復  更多評論
            
          主站蜘蛛池模板: 建湖县| 呈贡县| 常山县| 红河县| 濮阳市| 高清| 龙岩市| 民勤县| 瑞安市| 淄博市| 古蔺县| 新河县| 大庆市| 长沙市| 德格县| 临沭县| 重庆市| 连江县| 突泉县| 永清县| 宜君县| 金川县| 乳山市| 襄汾县| 兴义市| 舟山市| 鲁甸县| 济南市| 弥勒县| 黑龙江省| 贡山| 长沙县| 伽师县| 南通市| 富源县| 杂多县| 扎赉特旗| 修武县| 丽江市| 万宁市| 桑日县|