HTTPS=http+ssl/tls
http:明文 80
https:数据加密 443
c
1、clienthello:支持哪些版本、支持哪些加密算法,随机生成一组32字节数据random_c
3、clientkeyexchange:公钥加密数据pre_master
s
2、serverhello:确定版本、确定加密算法,随机生成一组32个字节得数据random_s
servercertificate:证书、公钥
4、data:服务端收到pre_master---私钥进行解密
最后得会话密钥:random_c+random_s+pre_master
dir = /etc/pki/CA
$dir/certs --->/etc/pki/CA/certs
database = $dir/index.txt
/etc/pki/CA/index.txt
openssl: 命令的选项
-x509 :生成自签名证书格式,专用于创建私有CA
-new :生成新证书的签署请求
-key :生成请求时用到的私钥文件路径
-out :生成后的文件存放路径,如果是自签名操作,将直接生成签署过的证书
-days :证书有效期 默认是365天
前提:在DNS服务器上的正向解析数据库中添加ca.example.com的解析内容
vim /var/named/example.com.zone
ca IN A 172.16.30.30
systemctl restart named
在RHEL8上没有/etc/pki/CA目录 需要手动新建
mkdir -p /etc/pki/CA/{certs,crl,newcerts,private}
1、在主机CA上为主机CA生成私钥
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem)
2、在主机CA上为主机CA生成自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
国家:CN
省份:HENAN
城市:SMX
组织名称:GL
组织单位名称:NETWORK
服务器主机名:ca.example.com
邮箱:root@example.com
web证书:web端生成私钥--web端生成签署请求文件--发送CA---CA签名---CA服务器端生成web证书--web端下载web证书
3、在主机CA上为CA提供所需的目录及文件
touch /etc/pki/CA/serial
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
4、在主机WEB上为主机WEB生成私钥,并将私钥存放在/etc/httpd/ssl目录中
mkdir /etc/httpd/ssl
(umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key)
5、在主机WEB上为web.example.com站点生成签署请求文件
openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
国家:CN
省份:HENAN
城市:SMX
组织名称:GL
组织单位名称:NETWORK
服务器主机名:web.example.com
邮箱:root@example.com
6、在主机web上将签署请求文件通过可靠方式发送给CA服务器。
scp /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/
7、在主机CA上 对签署请求进行数字签名,并指明所生成的Web证书的存放路径
openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
8、在主机WEB上将CA主机上已经数字签名后的Web证书下载下来
scp root@ca.example.com:/etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/
9、在主机WEB上安装apche http扩展模块mod_ssl
yum -y install mod_ssl
修改主配置文件vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
10、部署https站点
vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost 172.16.30.20:443>
DocumentRoot "/var/www/html"
ServerName web.example.com
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</VirtualHost>
systemctl restart httpd
11、设置防火墙
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
12、在客户端上去下载CA服务器上的根证书
scp root@ca.example.com:/etc/pki/CA/cacert.pem /root
13、打开火狐浏览器,导入证书
设置--首选项--高级--证书--查看证书--导入--找到根证书,然后双击--把“信任使用此CA标识的网站”勾上--确定--确定
14、访问https://web.example.com
集成动态web内容
1、安装httpd mod_wsgi
yum -y install httpd mod_wsgi
2、上传动态web内容--Python语言编写
mkdir /var/www/wsgi
cd /var/www/wsgi 然后将Python编写的动态web内容上传到该目录下
3、部署虚拟主机
首先将httpd.conf里面的documentroot那一行注释掉
然后将虚拟主机配置文件模板复制到/etc/httpd/conf.d/这个目录下
cp -p httpd-vhosts.conf /etc/httpd/conf.d/
vim /etc/httpd/conf.d/httpd-vhost.conf
<VirtualHost 172.16.30.20:80>
DocumentRoot "/var/www/wsgi"
WSGIScriptAlias / "/var/www/wsgi/webapp.py"
ServerName py.example.com
</VirtualHost>
systemctl restart httpd
4、在DNS服务器的正向解析数据库中写入py.example.com对应的解析内容
vim /var/named/example.com.zone
py IN A 172.16.30.20
systemctl restart named
5、在web服务器上设置防火墙
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
6、验证
访问http://py.example.com