一, 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认证/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 root@192.168.1.10:/etc/postfix
2.Mailserver 配置(postfix)
(1)生成私钥
- openssl genrsa 2048>/etc/postfix/mail.key
- chmod 600 /etc/postfix/mail.key
(2)生成证书请求文件
- scp root@192.168.1.254:/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 root@192.168.1.254:/tmp
(4)CA 证书服务器签发证书
- openssl ca -in /tmp/mail.csr -out /tmp/mail.crt -days 3650
- scp /tmp/mail.crt root@192.168.1.10:/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 发送邮件
来源: http://www.bubuko.com/infodetail-2686853.html