成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Postfix的傳輸層安全協議(TLS)

運維 系統運維
安全傳輸層協議(TLS)用于在兩個通信應用程序之間提供保密性和數據完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層為 TLS 記錄協議,位于某個可靠的傳輸協議(例如 TCP)上面。那本文就講下Postfix的傳輸層安全協議

  Postfix對于tls得支持,由lutz janicke所寫得一組修補文件提供。從postfix主頁得add-on software鏈接處可以取得這組修補文件。如果你使用平臺隨附得預編譯版postfix包,請確定該版本確實包含tls patch。

  除 了postfix本身要支持tls之外,你還必須制作、設定tls證書。你需要一個公鑰(public key)與一個私鑰(private key)。公鑰是代表服務器身份得證書,你必須向具有一定信譽得認證中心(certificate authority,ca)提出申請,他們依據你得申請書向你求證之后,會以他們自己得數字簽名簽署一個公鑰給你,只要客戶端愿意相信ca得簽名,就等于 間接相信ca核發得公鑰所證明得系統--你得服務器。除了你自己的證書外,你還必須取得ca的公鑰(核發證書給你的那一家ca)。

  對電子交易而 言,讓買方能夠證明賣方身份是很重要的。因此,網絡交易商確實有必要花錢取得ca的簽名。然而,就保密通信而言,服務器公鑰是否來自有公信力的ca,并不 是絕對必要的事,這表示你可以自己扮演ca的角色,自己核發證書給自己。當客戶端mua連接到你的tls server時,如果不認識你使用的ca證書,mua通常會提供一個機會給用戶,讓用戶自己決定要不要相信這個ca以及是否將ca的證書納入認同名單中。

  tls證書

  postfix tls patch需要用到openssl函數庫。openssl包隨附了一組管理證書的命令行工具,你可用這些工具來制作證書。就postfix而言,所有證書 都必須是pem格式。openssl工具的默認輸出格式剛好就是pem,所以不用任何轉換就可產生postfix可用的證書。openssl工具的默認安 裝目錄位于/usr/local/ssl,管理證書所需的命令行工具是openssl。

  自己開設認證中心

  服務器端證書必須要經過ca的簽署才有效。你可以付費請有公信力的ca為你簽署,不過,就保密用途而言,你并不需要花這筆錢。openssl包提供了一個腳本,讓你可以自己開設ca,自己簽署自己的證書。在openssl的安裝目錄下,鍵入下列命令:

  misc/ca.pl -newca

  然后回答所有問題,完成之后,它會在./democa/目錄下產生開設ca所需的全部文件,其中包括可用來簽署證書的“ca數字簽名”(又稱為“根證書”)

  tls證書概述

  tls 使用公鑰加密技術,讓client/server之間能夠進行私密通信。此外,tls能保證沒有人能夠在傳輸中途篡改信息,或是冒名偽裝成某一方,因為協 議本身容許通信雙方相互驗證彼此的身份。然而,再次提醒tls的好處僅限于tls聯機兩端,至于數據在傳輸之前發生過什么事,以及在傳輸到目的地之后會被 怎樣處理,tls都無法保證。

  公鑰加密技術的原理,是運用一對互補的key,其中一個可以公開給眾人知道,稱為“公鑰”;而另ygie key則只能由個人擁有,決不可泄漏,所以稱為“私鑰”或“密鑰”。公鑰加密的數據,只可由私鑰予以解密,反之亦然。利用這種特性,公鑰可用來讓別人傳輸 私密數據給你,而你可用私鑰來證明自己的身份。當別人要傳遞機密數據給你時,對方可使用你事先提供的公鑰來加密數據,由于只能用你自己的私鑰予以解密,所 以不怕機密數據泄漏(除非你泄露自己的私鑰)。私鑰又如何用來證明自己的身份?你可用自己的私鑰加密一份數據(這動作稱為“簽名”),如果對方能用你的公 鑰解開,表示數據一定來自于你,不可能是別人(除非你把自己的密鑰泄露給別人)。因此,你的密鑰可視為你個人的數字簽名。一般而言,你應該盡可能將公鑰散 布出去,而密鑰則必須不及一切代價予以保護。

  當你收到別人的公鑰時,你如何能夠相信,公鑰的擁有者確實是對方所宣稱的那個人?實際上,公鑰散布 時,往往會同時散布一個代表公鑰擁有者的標識符--通常是服務器的主機名稱。收到公鑰的一方,可通過比對此標識符是否與dns查出的主機名稱吻合,借此確 認公鑰的擁有者確實是當前的聯機對象。

  有ca數字簽名,稱為證書。ca通常是交易雙方都信任的第三方組織。理論上,有ca的證明,表示公鑰擁有者 的身份已經被ca調查并予以證實,取得公鑰的人,可以相信該公鑰確實屬于其宣稱的擁有者。換言之,證書的授信基礎來自于你對ca的信任。值得注意的是, ca只擔保證書擁有者的身份,而不是擔保其信用。

  在加密通信的過程中,公私鑰僅用于聯機初期,讓雙方互相確定對方的身份,并協商出一個隨機產生的 session key,實質的通信內容,其實是由這個session key來加密與解密。一個session key只用於一次通信,在通信完畢之后,session key就可以丟掉了。

  讓我們看看client與server之間是如何進行秘密通信的。首先,client聯機到server,并提出秘密通信要求。對于web server,client使用https命令;對于smtp server,client發出starttls命令。

  如 果server同意請求,便會返回一個由ca簽署的證書,其中含有ca的數字簽名以及一個代表server的標識符。client檢驗server的標識 符是否符合預期,并檢查該ca的數字簽名是否在認同名單中。如果兩項檢查都過關,client與server雙方便開始展開session key協商,決定后續通信內容要使用哪一種加密算法,并產生一個只用於該次通信的session key。接著,雙方便使用協議出來的session key與算法進行秘密通信。

  產生服務器端證書

  產生服務器端證書的第一步,是使用openssl工具為服務器產生一對公鑰與私鑰, 然后產生一個“證書簽署請求”(certificate signing request, csr),并將csr與公鑰交給ca簽署。經過ca簽署的公鑰證書可以廣泛散布出去,但是私鑰則必須被謹慎保管。事實上,有許多應用系統將私鑰加密封存在 一個特殊文件,在訪問私鑰之前,必須先提供密碼(passphrase)才能解密,這種儲存私鑰的方法稱為“密封”。然而,postfix需要能夠直接訪 問私鑰,不能使用密封方法,因為訪問私鑰的動作發生在運行時,而此時你不可能實時提供密碼。

  openssl包提供一組腳本可幫助你產生公私鑰與csr,不過,它們所產生的key是“密封”的,所以,你得直接使用openssl命令來產生公私鑰:

  openssl req -new -nodes -keyout mailken.pem -out mailreq.pem -days 365

  openssl得-new選項表示你想產生公私鑰與csr,-nodes選項表示不加密,-keyout和-out分別指出私鑰文件與csr文件得名稱。最后,-days 365指出證書得有效期限是一年。

  如果你使用第三方ca,請按照ca得指示,提出你得csr來要求他們簽署。如果你自己扮演ca得角色,你可用下列命令來核發證書:

  openssl ca -out mail_signed_cert.pem -lnfiles mailreq.pem

  此步驟所產生得mail_signed_cert.pem文件,就是ca所核發得證書。

  你可能會想要將postfix/tls用到得所有證書文件復制到一個方便得位置。假設你完全依照上述得步驟,則請用下列命令將證書文件復制到postfix的配置目錄下:

  cp /usr/local/ssl/mailkey.pem /etc/postfix

  cp /usr/local/ssl/mail_signet_cert.pem /etc/postfix

  mailkey.pem文件存有服務器的密鑰,mail_signed_cert.pem是ca簽署的公開證書。由于postfix不能使用密封的私鑰文件,所以你應該以最嚴格的權限模式來保護私鑰文件:

  chown root /etc/postfix/mailkey.pem

  chmod 400 /etc/postfix/mailkey.pem

  上述命令將私鑰文件的擁有權判給root賬戶,而且只有root能夠讀取。

  安裝ca證書

  postfix/tls server必須要能夠訪問ca的公開證書(也就是所謂的“根證書”),包括為你的服務器簽名的那一個ca以及核發證書給你的用戶的每一個ca。當然,如果雙方使用同一個ca,則只需要安裝一個根證書就夠了。

  如果你的服務器端證書是自己簽發給自己的,請將先前的ca.pl腳本所產生的cacert.pem文件復制到postfix的配置目錄:

  cp /usr/local/ssl/democa/cacert.pem /etc/postfix

  如果你的服務器或任何客戶端的證書是第三方ca所簽發的,你必須設法取得這些ca的根證書(pem格式);對于你不信任的ca,自然沒必要取得他們的根證書。請將搜集到的所有根證書集中在/etc/postfix/cacert.pem文件里。

  有 兩種方法可將新的ca根證書安裝到postfix/tls系統。第一種辦法是將所有根證書集中在一個文件,并將smtpd_tls_cafile參數指向 此文件。你只需將新的根證書附加在現有文件末端即可。比方說,若原有的ca根證書是存儲在/etc/postfix/cacert.pem文件中,而新 ca的根證書是存放在newca.pem文件中,那么,下列命令可將新的根證書納入認同名單:

  cp /etc/postfix/cacert.pem /etc/postfix/cacert.pem.old

  cat newca.pem >> /etc/postfix/cacert.pem

  另一種方法是將每個ca的根證書全部集中一個專用目錄下的個別文件里,并將smtpd_tls_capath參數指向此目錄。以后,每當需要安裝新的ca根證書時,只要將新的證書文件存放在此目錄下,然后執行一次openssl的c_rehash命令即可。

  當你有許多ca根證書要處理時,這種方法可讓維護工作稍微輕松些;不過,如果你的postfix是在chroot環境下運行,則還需要將新的根證書文件復制到chroot環境下的對應目錄,然后運行postfix reload,新證書才會有效。

  設定postfix/tls

  postfix tls patch引進了一組關于tls運作環境的參數。本小節只列出基本配置所需的關鍵參數,至于完整的tls參數說明,請參閱tls patch隨附的配置文件樣本。

  smtpd_use_tls

  啟動tls支持。如果沒有設定此參數或是設定成no,postfix的運行方式就像沒有tls patch一樣。例如:

  smtpd_use_tls = yes

  smtpd_tls_key_file

  指向服務器私鑰文件。例如:

  smtpd_tls-key_file = /etc/postfix/mailkey.pem

  smtpd_tls_cert_file

  指向服務器的pem證書文件(必須經過ca簽署)。例如:

  smtpd_tls_cert_file = /etc/postfix/mail_signed_cert.pem

  smtpd_tls_cafile

  指向ca根證書文件。該文件含有所有你愿意信任的ca的公開證書。例如:

  smtpd_tls_cafile = /etc/postfix/cacert.pem

  smtpd_tls_capath

  指向ca根證書文件目錄。該目錄下的每個pem文件,都含有一個你信任的ca公開證書。例如:

  smtpd_tls_capath = /etc/postfix/certs

  將上述參數設定到main.cf配置文件,并運行postfix reload之后,你的postfix/tls server將具備秘密通信的能力,并準備迎接客戶端的starttls命令。

#p#

  postfix/tls的設定過程整理

  總結前述的基本知識,在postfix系統上設定tls的大致過程如下:

  1、安裝openssl包,因為我們需要使用該軟件包來產生tls證書。

  2、使用tls patch,并重新編譯、安裝postfix。

  3、產生一份服務器端證書以及一個證書簽署請求(csr)。然后將兩者一并提交給有一定信譽的ca請求簽署;或是自己扮演ca的角色,自己核發證書給自己。

  4、將所有證書文件(服務器的密鑰、csr、ca的根證書)安裝在postfix目錄下。

  5、編輯main.cf,設定下列tls參數:

  smtpd_use_tls = yes

  smtpd_tls_key-file = /etc/postfix/mailkey.pem

  smtpd_tls_cert_file = /etc/postfix/mail_sigend_cert.pem

  smtpd_tls_cafile = /etc/postfix/cacert.pem

  如果還需要設定其他tls參數,現在正是時候。

  6、重新加載postfix,使我們在main.cf所做的改變生效。

  現在,每當有客戶端要求秘密通信,postfix/tls server都能適當應對。

  取得客戶端證書

  你可能會想要使用客戶端證書來代替或加強其他smtp驗證技術。客戶端證書是非常可靠的驗證方法,因為其非常難以假造。

  客戶端證書必須由ca核發。如果你打算選擇一個ca來核發證書給你的用戶,你應該遵照該ca的申請過程來取得客戶端證書。當然,你也可以使用openssl包提供的工具,自己扮演ca的角色,自己簽發證書給用戶。

  制作客戶端證書

  客戶端證書的制作程序,其實與服務器端證書的制作過程很相似,唯一差別是多了一個步驟:將簽署好的證書換成mua可用的格式。大部分流行的mua都偏好 pkcs12格式的證書文件,這種格式將簽署好的證書與私鑰封裝在一起,并以一個密碼保護。如果你使用第三方ca,該ca應該能提供正確格式的證書文件來 滿足用戶的mua。如果你自己簽署證書,你應該制作pkcs12格式的證書文件來分發給用戶。證書文件應該包含核發給用戶個人的證書(公鑰)、搭配于該證 書的私鑰以及你自己的ca根證書。

  對于每一位你打算以證書來驗證其身份的用戶,你都必須分別產生一對專屬的公私鑰。你應該指定“辨別名稱”的命名原則。一般而言,在產生證書時,你應該使用 個人的郵件地址或是客戶端機器的主機名稱。舉例來說,假設你決定以郵件地址為分辨名稱,而現在要簽發證書給kdent@ora.com這位用戶,步驟如 下:

  1、使用openssl命令產生一對公私鑰。請注意,你自己的公鑰也必須有ca的簽名

  openssl req -new -nodes -keyout kdentkey.pem -out kdentreq.pem -days 365

  由于使用了-new選項,所以上述命令會產生一個私鑰與一份csr。-nodes選項要求openssl不要將私鑰密封。-keyout和-out分別指出私鑰文件和csr的文件名。最后,-days 365表示證書的有效期是一年。

  2、簽署證書。如果你與ca合作,請按照他們的申請流程,提出前一步驟所產生的csr,要求他們簽署。如果你自己作為ca,請用下列命令簽署證書:

  openssl ca -out kdent_signed-cert.pem -infiles kdentreq.pem

  3、將簽署好的證書文件轉換成適當格式。問清楚用戶所用的mua是哪一種,將ca簽章的證書文件轉換成該mua能接受的格式:

  openssl pkcs12 -in kdent_sigend_cert.pem -inkey kdentkey.pem -certfile /etc/postfix/cacert.pem -out kdent.p12 -export -name "kdent@ora.com"

  這命令會要求你提供一個密碼來保護所產生的文件(kdent.p12),而你必須將這個密碼告知用戶。-certfile選項指出你自己的ca根證書文件。完成之后,就可將kdent.p12文件與腳本交付給用戶。

  最后一步,請用戶自己將證書文件安裝道mua。大多數mua都提供相當簡便的步驟來導入證書文件,所以應該不成問題。如果你有不擅長操作計算機的用戶,請給予適當的指導。

  設定客戶端證書驗證

  postfix/tls依據證書的“指紋”來判別證書是否可接受。“指紋”是從證書中計算出來的值,不同的證書,不可能計算出相同的指紋。你必須將每個客 戶端證書的指紋都存放于一個標準的postfix查詢表。每當有客戶端出示其證書,postfix/tls就計算該證書的指紋,然后檢查該指紋是否已登記 在查詢表,借此決定是否要容許客戶端使用轉發服務。

  你必須收集每一位獲得授權的客戶端的證書指紋。許多mua都有顯示證書指紋的功能,你可以要求用戶將他們在mua看到的證書指紋提供給你。如果他們的證書是你自己核發的,你可以用openssl x509命令直接算出指紋:

  openssl x509 -fingerprint -noout -in kdent_signed_cert.pem | cut -d -f2

  整個設定流程如下:

  1、分別取得每一位用戶的證書指紋。你可以按照上述步驟自己計算,或是要求用戶提供給你。

  2、將收集道的指紋集中在/etc/postfix/clientcerts文件,并注明其對應的辨別名稱。

  3、將制作好的clientcerts查詢表轉換成數據庫:

  postmap /etc/postfix/clientcerts

  4、編輯main.cf配置文件,加入下列參數:

  relay_clientcerts = hash:/etc/postfix/clientcerts

  smtpd_tls_ask_cert = yes

  smtpd_recipient_restrictions =

  permit_mynetworks

  permit_tls_clientcerts

  reject_unauth_destination

  5、重新加載postfix,使我們在main.cf所做的改變生效:

  postfix relaod

  tls/smtp client的設定過程

  既然smtp/tls server能要求客戶端出示證書,那么,當postfix扮演客戶端角色時--寄信到其他smtp server,或要求其他smtp server轉發郵件--smtp mda也可能被要求提供客戶端證書。注意,一個postfix系統只能有一個代表自己的客戶端證書,除非你在master.cf中設定了其他mda,才有 可能安裝多個的客戶端證書。

  證明服務器端身份的證書,也可以用來證明客戶端身份。不過,正式ca核發的證書,不見得能讓你同時用在兩種身份上。這種情況下,你可能需要向ca另外申請 一個客戶端證書。我們先前制作的自簽名服務器證書沒有這樣的限制。不管你的客戶端證書是怎么來的,其辨別名稱都必須符合myhostname參數所指定的 主機名稱。

  制作客戶端證書的過程,其實與服務器端證書的制作過程完全一樣,所以不再贅述。如果你打算使用同樣的證書,那么,只要將幾個tls client參數指向tls server參數所用的相同文件即可。

  以下是最基本的tls client參數。

  smtp_use_tls

  啟動postfix smtp client的tls支持。

  smtp_use_tls = yes

  smtp_tls_key_file

  指向客戶端證書所對應的私鑰文件。

  smtp_tls_key_file = /etc/postfix/mailkey.pem

  smtp_tls_cert_file

  指向客戶端證書文件。

  smtp_tls_cert_file = /etc/postfix/mail_signed_cert.pem

  smtp_tls_cafile

  簽署客戶端證書的ca的根證書文件,例如:

  smtp_tls_cafile = /etc/postfix/cacert.pem

  假設你打算讓smtp使用與smtpd相同的證書,設定步驟相當簡單:

  1、編輯main.cf,設定下列參數:

  smtp_use_tls = yes

  smtp_tls_key_file = /etc/postfix/mailkey.pem

  smtp_tls_cert_file = /etc/postfix/mail_signed_cert.pem

  smtp_tls_cafile = /etc/postfix/cacert.pem

  2、重新加載postfix,使main.cf的改變生效;

  postfix reload

  現在,每當postfix聯機到一個妖氣出示客戶端證書的smtp server,smtp便會提供必要的信息。

通過閱讀本文,想必大家都知道了在Postfix里傳輸層安全協議是怎么安裝、整理和設定的,希望對大家有所幫助!

【編輯推薦】

  1. Postfix sasl身份驗證功能
  2. Postfix利用擋信機制來消除垃圾郵件的隱患
  3. Postfix的投遞過程詳解
  4. Postfix里的POP與Imap介紹
  5. PostfixAdmin 配置過程講解
  6. 如何安裝PostfixAdmin
  7. 8.2.3 SSL與TLS
  8. OpenSSL:最好的SSL TLS加密庫

 

責任編輯:趙鵬 來源: 網絡轉載
相關推薦

2016-10-10 23:00:18

2016-10-10 22:48:16

2022-10-28 18:36:18

2009-12-29 19:35:56

2016-11-29 15:22:47

協議應用層安全層

2023-10-09 18:28:12

2010-07-06 15:43:04

UDP協議

2010-06-09 13:21:30

TCP傳輸層協議

2013-05-29 09:29:07

OSI傳輸層TCP協議

2010-09-09 16:48:50

七層網絡協議

2021-07-07 12:36:10

HTTPSSSL通信

2022-05-25 09:52:36

車聯網通信安全SSL/TLS

2010-06-09 10:25:18

SET應用層協議

2021-05-13 07:58:05

HTTPSHTTP安全

2018-03-26 23:01:47

2009-11-06 13:34:53

2021-10-11 10:41:14

TCP傳輸層協議網絡

2010-06-28 15:41:04

FTP文件傳輸協議

2023-08-21 14:00:09

2016-07-12 09:40:30

惡意程序TLS加密惡意流量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久www免费人成看片高清 | 日韩av成人 | 99reav| 成人免费在线观看 | 亚洲成人精品一区 | 欧美色999 | 午夜资源 | 国产美女自拍视频 | 日本a在线 | 国产高清区 | 色婷婷激情 | 亚洲精品电影网在线观看 | 大乳boobs巨大吃奶挤奶 | 国产精品日韩欧美一区二区 | a级大片免费观看 | 青青草华人在线视频 | 一本色道精品久久一区二区三区 | 国产精品一区二区av | 日韩精品在线观看一区二区三区 | 精品视频一区二区三区在线观看 | 精品国产乱码久久久 | 亚洲视频一区二区三区 | 日韩午夜一区二区三区 | 国产欧美日韩在线一区 | 久久国产精品久久久久 | 操人网站| 久亚州在线播放 | 成人午夜视频在线观看 | 欧美日批 | 一本一道久久a久久精品蜜桃 | 亚洲综合日韩精品欧美综合区 | 日本午夜免费福利视频 | 国产1区| 免费福利视频一区二区三区 | 99久久精品国产毛片 | 久久一区二区三区电影 | 一区二区在线 | 中文字幕一区在线 | 日韩视频a | 色呦呦网站| 亚洲精品视频一区 |