1. 程式人生 > >CA認證簡述與郵件服務器加密

CA認證簡述與郵件服務器加密

sco item default yum cat 通訊 null led 內容

一、CA認證機構

電子商務認證授權機構(CA, Certificate Authority),是負責發放和管理數字證書的權威機構,並作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。

二、數字加密


1.加密與解密

加密:使用密鑰與算法將文字轉換成不能直接閱讀的形式(即密文)的過程稱為加密。
解密:使用密鑰與算法將密文轉換成能夠直接閱讀的文字(即明文)的過程稱為解密。

2.密鑰

成對產生,分為私鑰和公鑰(一般私鑰自己留存、而公鑰公布在公網中)

3.算法

對稱算法

DES:IBM、3DES:IBM、AES:128,192,256位長度

非對稱算法

RSA、Elgamal、背包算法、Rabin、D-H(如:IPsec ×××)、ECC(橢圓曲線加密算法)

註:使用最廣泛的是RSA算法,Elgamal是其次

三、加密方式


1.對稱加密

加密:發送方(應用)--> 數據 --> 發送方私鑰(文件)+算法 => 加密後數據

解密:接收方(應用) -->加密後數據 --> 發送方私鑰(文件)-算法 => 解密後數據

2.非對稱加密

(1)私加+公解

加密:發送方(應用)--> 數據 --> 發送方私鑰(文件)+算法 => 加密後數據

解密:接收方(應用)--> 數據 --> 發送方公鑰(文件)+算法 => 加密後數據

(2)公加+私解

加密:發送方(應用)--> 數據 --> 接收方公鑰(文件)+算法 => 加密後數據

解密:接收方(應用)--> 數據 --> 接收方私鑰(文件)+算法 => 加密後數據

四、數字簽名


保證數據的不可否認性,防止數據被篡改

數據由簽名者(發送方)簽名發送

數字簽名使得別人不能偽造和篡改數字證書

註:數字簽名使用HASH(散列)算法實現

五、數字證書


證書是由證書簽證機關(CA)簽發的對用戶的公鑰的認證。

數字證書為實現雙方安全通信提供了電子認證。在因特網、公司內部網或外部網中,使用數字證書實現身份識別和電子信息加密。數字證書中含有公鑰對所有者的識別信息,通過驗證識別信息的真偽實現對證書持有者身份的認證。

1.數字證書類型

個人數字證書,主要用於標識數字證書自然人所有人的身份,包含了個人的身份信息及其公鑰,如用戶姓名、證件號碼、身份類型等,可用於個人在網上進行合同簽定、定單、錄入審核、操作權限、支付信息等活動。

機構數字證書,主要用於標識數字證書機構所有人的身份,包含機構的相關信息及其公鑰,如:企業名稱、組織機構代碼等,可用於機構在電子商務、電子政務應用中進行合同簽定、網上支付、行政審批、網上辦公等各類活動。

設備數字證書,用於在網絡應用中標識網絡設備的身份,主要包含了設備的相關信息及其公鑰,如:域名、網址等,可用於×××服務器、WEB服務器等各種網絡設備在網絡通訊中標識和驗證設備身份。

代碼簽名數字證書,是簽發給軟件提供者的數字證書,包含了軟件提供者的身份信息及其公鑰,主要用於證明軟件發布者所發行的軟件代碼來源於一個真實軟件發布者,可以有效防止軟件代碼被篡改

2.數字證書內容

1)使用者的公鑰

2)使用的標記(如名稱和郵箱等)

3)有效期限

4)頒發者的標誌信息

5)頒發者的數字簽名

註:證書的格式和驗證方法普遍遵循X.509 國際標準。一般數字證書用於公司的網站服務器。
部分資料參考百度百科:https://baike.baidu.com/item/CA%E8%AE%A4%E8%AF%81/6471579

案例:給Postfix郵件服務器頒發CA證書實現郵件服務的加密


自建CA

註:通常不會自己搭建CA服務器,自己搭建的CA頒發的證書在公網中不會被認可,此處是在內網中使用。

1.CA配置

(1)安裝openssl軟件包

yum -y install openssl

(2)修改模版配置文件

vim /etc/pki/tls/openssl.cnf
130 countryName_default             = CN        //指定國家
135 stateOrProvinceName_default     = Beijing       //指定省份
138 localityName_default    = Beijing           //指定城市
141 0.organizationName_default      = xueluo.org    //頒發的組織名稱
148 organizationalUnitName_default  = IT        //指定部分

(3)生成私鑰

openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048      //生成使用RSA 2048位的私鑰文件
chmod 600 /etc/pki/CA/private/cakey.pem

(4)生成根證書(CA證書)

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650    //通過私鑰文件生成有效期有10年的根證書

註:Common Name (eg, your name or your server‘s hostname) []:頒發的主機名

(5)創建索引和證書序列號文件

touch /etc/pki/CA/index.txt
echo "00" >/etc/pki/CA/serial

(6)拷貝根CA證書到郵件服務器

scp /etc/pki/CA/cacert.pem [email protected]:/etc/postfix

2.Mailserver配置(postfix)

(1)生成私鑰

openssl genrsa 2048 >/etc/postfix/mail.key
chmod 600 /etc/postfix/mail.key

(2)生成證書請求文件

scp [email protected]:/etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf
openssl req -new -key /etc/postfix/mail.key -out /etc/postfix/mail.csr

註:Common Name (eg, your name or your server‘s hostname) []:頒發的主機名

(3)將請求文件拷貝到CA服務器

scp /etc/postfix/mail.csr [email protected]:/tmp

(4)CA證書服務器簽發證書

openssl ca -in /tmp/mail.csr -out /tmp/mail.crt -days 3650
scp /tmp/mail.crt [email protected]:/etc/postfix

3.配置postfix

(1)創建運行用戶和組

/etc/init.d/postfix stop && chkconfig --level 35 postfix off                //將系統自帶服務停止並開機禁用

#useradd -M -s /sbin/nologin postfix
#groupadd postfix
#groupadd postdrop

gpasswd -a postfix postfix                              //將postfix用戶加入到Postfix組
gpasswd -a postfix postdrop                         //將postfix用戶加入到postdrop組

(2)解壓並安裝postfix

tar -zxvf postfix-3.2.2.tar.gz -C /usr/src/
cd /usr/src/postfix-3.2.2/
make makefiles CCARGS=‘-DUSE_TLS -I/usr/include/openssl/‘AUXLIBS=‘-L/usr/lib -lssl -lcrypto‘
//生成Mailfile配置文件,並啟動TLS認證、指定依賴庫文件位置
make && make install

(3)編輯配置文件

postconf -n >/tmp/hehe.conf                 //將有效的配置文件導出
mv /tmp/hehe.conf /etc/postfix/main.cf
vim /etc/postfix/main.cf
  9 inet_interfaces = 192.168.1.10              //指定監聽IP
 10 myhostname = mail.xueluo.org                //新增,指定當前主機名
 11 mydomain = xueluo.org                   //新增,指定郵件域
 12 myorigin = $mydomain                    //新增,外發郵件時發送中郵件域
 13 home_mailbox = Maildir/                 //新增,郵件的存儲位置(存儲到用戶的家目錄)
 19 mydestination = $myhostname,$mydomain           //允許投遞的目標郵件域
  smtpd_use_tls       = yes
  smtpd_tls_key_file  = /etc/postfix/mail.key       //郵件服務器私鑰文件
  smtpd_tls_cert_file = /etc/postfix/mail.crt       //郵件服務器證書文件(公鑰文件)
  smtpd_tls_CAfile    = /etc/postfix/cacert.pem     //CA證書服務器證書文件(公鑰文件)
  smtpd_tls_received_header = yes
  smtpd_enforce_tls = yes
  smtpd_tls_loglevel = 2
  smtp_use_tls       = yes
  smtp_tls_key_file  = /etc/postfix/mail.key
  smtp_tls_cert_file = /etc/postfix/mail.crt
  smtp_tls_CAfile    = /etc/postfix/cacert.pem
  smtpd_tls_protocols = !SSLv2, !SSLv3
  smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

上半部分的配置是系統作為服務端,接收客戶端和其他郵件服務器時如何啟用tls;下版半部分服務器作為客戶端對外發送郵件也啟用tls

vim /etc/postfix/master.cf
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes //打開465(smtps)端口
smtps inet n -  n -- smtpd -o smtpd_sasl_auth_enable=yes
vim /etc/postfix/tls_policy                 //強制使用TLS發信
  xueluo.org encrypt
postmap /etc/postfix/tls_policy

註:通過以上的配置啟用了tls發信設置,那麼系統發信時會檢查對方服務器是否支持tls,如果支持則使用tls傳輸,否則采用正常的郵件發送;postfix可以設置向某些域發送強制使用TLS,如果對方不支持則郵件將延遲發送
(4)啟動服務

postfix stop && postfix start                           //啟動postfix服務

4.配置Mailserver(dovecot)

(1)創建運行用戶

useradd -M -s /sbin/nologin dovecot
useradd -M -s /sbin/nologin dovenull

(2)源代碼編譯安裝

tar -zxvf /root/dovecot-2.2.31.tar.gz -C /usr/src/      
cd /usr/src/dovecot-2.2.31/
./configure --sysconfdir=/etc/ --enable-ssl             //配置dovecot的配置文件存儲目錄
make && make install

(3)拷貝模版文件

cp doc/dovecot-initd.sh /etc/init.d/dovecot             //拷貝啟動腳本文件
chmod +x /etc/init.d/dovecot
chkconfig --add dovecot                     //將dovecot註冊為系統服務
cp -r /usr/local/share/doc/dovecot/example-config/* /etc/dovecot/   //拷貝模版配置文件

(4)新建PAM認證模塊

vim /etc/pam.d/dovecot
#%PAM-1.0
auth    required    pam_nologin.so
auth    include system-auth
account include system-auth
session include system-auth

(5)編輯配置文件

vim /etc/dovecot/dovecot.conf
  !include conf.d/10-auth.conf          //只使用系統用戶認證
  !include conf.d/10-ssl.conf               //啟動SSL證書認證
  disable_plaintext_auth = no
  mail_location = maildir:~/Maildir         //指定郵箱的位置
  #!include conf.d/*.conf               //註釋該行,位於98行
vim /etc/dovecot/conf.d/10-ssl.conf
 6 ssl = yes
 12 ssl_cert = </etc/postfix/mail.crt   
 13 ssl_key = </etc/postfix/mail.key

(6)啟動服務

/etc/init.d/dovecot restart             //重啟dovecot服務

DNS部署

一塊網卡為vmnet1

1.修改網絡配置

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS1=192.168.1.10
/etc/init.d/network restart
vim /etc/sysconfig/network
HOSTNAME=ns.xueluo.org

2.安裝bind軟件包

yum -y install bind bind-utils

3.編輯主配置文件

vim /etc/named.conf
options {
    listen-on port 53 { 192.168.1.10; };                    //設置監聽IP地址;需修改
    directory   "/var/named";                       //區域配置文件存放目錄
    dump-file   "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query {localhost;};                       //刪除該行,也可寫為any
    recursion yes;
    dnssec-enable no;                           //bind安全檢測機制;需修改
    dnssec-validation no;                       //bind安全檢測機制;需修改
    dnssec-lookaside auto;
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "xueluo.org" IN {                              //指定正向解析域為xueluo.org
    type master;                                //指定DNS類型,為主DNS服務器
    file "xueluo.org.zone";                         //正向解析文件
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
cp /var/named/named.empty /var/named/xueluo.org.zone                //拷貝DNS模版文件並重命名
vim /var/named/xueluo.org.zone
$TTL 86400(TTL值,生命周期)
@   IN SOA  xueluo.org.(需要解析的域名) admin.xueluo.org.(管理員郵箱) (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    IN  NS  ns.xueluo.org.      //NS記錄(起始授權記錄);輸入DNS服務器的主機名
ns  IN  A   192.168.1.10        //DNS服務器對應的IP地址
    IN  MX 10   mail.xueluo.org.        //MX記錄
mail    IN  A   192.168.1.10        //mail.xueluo.org對應的IP
chown named:named /var/named/xueluo.org.zone

4.啟動named服務

/etc/init.d/named start && chkconfig --level 35 named on

此時客戶端可使用加密的端口SMTP:645和POP3:995發送郵件

CA認證簡述與郵件服務器加密