背景:
http方式:客户端到服务器采用明文传输,任何人可以轻松截取或篡改机密数据
https方式:隐私数据采用密文传输,即使被截获也无法解密
环境:
1台服务器(可以和颁发机构共用一台主机)
1台证书颁发机构
1台客户机
过程:
第一步:网站服务器生成秘钥,将公钥发送给证书颁发机构CA,用来做证书
第二步:CA根据自己的秘钥算法,结合公钥生成crt证书文件,并颁发给网站服务器
第三步:客户端向服务器发送请求后,服务器将证书相关信息发送给客户端浏览器
第四步:客户端检查收到的证书是否是信任机构的证书,是,则点信任表示授权该证书
一、颁发机构主机,找到openssl工具,先生成根证书文件秘钥cakey.pem
说明:umask用来限制一般用户访问;调用到openssl工具;rsa算法;并生成和输出cakey .pem文件;秘钥长度为2048
命令: ( umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
二、修改openssl配置文件/etc/pki/tls/openssl.cnf,设置生成自签署证书时的关键默认值
说明:国家、省份、城市、组织、组织部门
三、创建根证书文件cacert.pem
说明:采用req格式;新建申请文件;国际标准509;由cakey.pem秘钥生成;输出名cacert.pem;有效期为365天;配置文件默认,填写域名和管理员邮箱
命令 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
四、网站服务器主机
说明:服务器需启用的一些模块(如已安装apache,需yum 安装mod_ssl和openssl,采用动态模式加载模块)
--with-included-apr --enable-so --enable-deflate=shared --enable-expires=share --enable-rewrite=shared --enable-ssl
1、生成一个秘钥httpd.key
命令 (umask 077;/usr/bin/openssl genrsa 1024 >httpd.key)
2. 用httpd.key秘钥,新建一个证书申请文件httpd.crq
说明:填写颁发机构信息;域名只能选择一个有效(如果有多个);无需额外加密提高安全性,直接回车即可
命令 /usr/bin/openssl req -new -key httpd.key -out httpd.crq
3. 将证书申请文件交给证书颁发机构
五、颁发机构主机创建: index.txt,用于存放颁发了证书存放的记录,serial用于说明证书序号
说明:需在openssl配置文件中指明/etc/pki/tls/openssl.cnf
命令touch index.txt
命令echo "00">>serial
六、生成证书文件http.crt
说明:用ca命令;指定申请文件;输出;有效期;检查网站服务器申请信息是否和颁发机构一致,如审核没问题,就回复y签署;成功生成证书之后,serial和index.txt会自动记录值
命令 /usr/bin/openssl ca -in /tmp/httpd.crq -out /tmp/http.crt -days 365
七、将生成的证书http.crt传给网站服务器
八、网站服务器修改配置文件
1. 如apache,主配置文件/usr/local/apache2/conf/httpd.conf
说明:启用ssl加密,加载ssl模块
2. 继续修改配置文件/usr/local/apache2/conf/extra/httpd-ssl.conf
说明:端口号默认443;设置根目录,域名;打开引擎;指定证书文件和秘钥文件目录
九、客户机测试