PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境
PKI 主要包括四个部分:X.509 格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA 操作协议;CA管理协议;CA政策制定
X.509通用的证书格式包含三个文件:key,csr,crt。
key是私钥文件
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
[root@server ~]# yum install mod_ssl -y
#打开主配置文件
[root@server ~]# vim /etc/httpd/conf.d/ssl.conf
#常用参数如下
Listen 443 https #监听的端口号
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog #存储证书的密码信息
SSLSessionCache shmcb:/run/httpd/sslcache(512000) #ssl的缓存位置
SSLSessionCacheTimeout 300 #缓存的超时时间
<VirtualHost _default_:443> #定义虚拟主机的信息
ErrorLog logs/ssl_error_log #错误日志
TransferLog logs/ssl_access_log #传输日志
LogLevel warn #日志等级
SSLEngine on #ssl引擎开启
SSLHonorCipherOrder on #协商算法
SSLCertificateFile /etc/pki/tls/certs/localhost.crt #证书存储路径
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key #私钥文件路径
</VirtualHost> # 虚拟主机结束定义
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install httpd mod_ssl -y
[root@server ~]# systemctl start httpd # 启动httpd
[root@server ~]# systemctl enable httpd # 设置开机启动
[root@server ~]# mkdir -vp /www/zy
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/zy'
#使用mobaxterm上传网页
[root@server ~]# cd /etc/pki/tls/private # 进入私钥文件存储目录
[root@server private]# openssl genrsa -aes128 2048 > zy.key # 建立私钥文件,必须是.key文件
Enter PEM pass phrase: # 密码123456
Verifying - Enter PEM pass phrase: # 再输一遍密码123456
[root@server private]# cd /etc/pki/tls/certs
[root@server certs]# openssl req -utf8 -new -key /etc/pki/tls/private/zy.key -x509 -days 365 -out zy.crt
Enter pass phrase for /etc/pki/tls/private/zy.key: # 输入私钥加密密码123456
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
# 注意:下列证书信息项目,在面试时常问
Country Name (2 letter code) [XX]:86 # 国家代码
State or Province Name (full name) []:shanxi # 省份
Locality Name (eg, city) [Default City]:xi'an # 城市
Organization Name (eg, company) [Default Company Ltd]:openlab # 公司
Organizational Unit Name (eg, section) []:RHCE # 部门
Common Name (eg, your name or your server's hostname) []:server # 主机名
Email Address []:andy@qq.com # 邮箱
# 输入内容时,若输入错误,使用ctrl+退格 进行删除
#面试题:数字证书的包含信息有:
#国家代码:86
#省份:shanxi
#城市:xi'an
#公司:openlab
#部门:RHCE
#主机名:server
#邮箱:andy@qq.com
[root@server certs]# cd ~
[root@server ~]# vim /etc/httpd/conf.d/ssl.conf
# 定位第一行,输入以内内容
<virtualhost 192.168.80.129:443> #设置虚拟主机区域配置
sslengine on #开启ssl
SSLCertificateFile /etc/pki/tls/certs/zy.crt #证书存储路径
SSLCertificateKeyFile /etc/pki/tls/private/zy.key #私钥文件路径
servername 192.168.80.129 #主机名或域名
documentroot /www/zy #启动目录
<directory /www/zy> #目录权限
allowoverride none
require all granted
</directory>
</virtualhost>
[root@server ~]# systemctl restart httpd
🔐 Enter TLS private key passphrase for 192.168.80.129:443 (RSA) : (press TAB for no echo****** #需要输入私钥的密码123456
# 在windows端打开浏览器,输入https://192.168.13.134,点击高级->接受风险并继续
组建多个子目录网站www.openlab.com,该网站有2个子目录www.openlab.com/file和www.openlab.com/ftp,要求:
第一步:准备工作
# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install httpd mod_ssl -y
[root@server ~]# systemctl start httpd # 启动httpd
[root@server ~]# systemctl enable httpd # 设置开机启动
[root@server ~]# mkdir -vp /www/file
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/file'
[root@server ~]# mkdir -vp /www/ftp
mkdir: 已创建目录 '/www/ftp'
[root@server ~]# echo "file" > /www/file/index.html
[root@server ~]# echo "ftp" > /www/ftp/index.html
[root@server ~]# vim /etc/hosts # 添加如下内容
192.168.80.129 www.openlab.com #注:只能是主域名,不能是www.openlab.com/file等子目录网站
[root@server ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.129 www.openlab.com
[root@server ~]# vim /etc/httpd/conf/httpd.conf
<virtualhost 192.168.80.129>
documentroot /www/file
alias /file /www/file #给/www/file建立一个别名/file,当访问/file时,跳转到/www/file
servername 'file'
<directory /www/file>
allowoverride none
require all granted
</directory>
</virtualhost>
# 设置私钥文件
[root@server ~]# openssl genrsa -aes128 2048 > /etc/pki/tls/private/ftp.key # 设置私钥文件
Enter PEM pass phrase: #设置私钥密码123456
Verifying - Enter PEM pass phrase: #再次确认私钥密码123456
# 设置证书
[root@server ~]# openssl req -utf8 -new -key /etc/pki/tls/private/ftp.key -x509 -days 365 -out /etc/pki/tls/certs/ftp.crt # 设置证书
Enter pass phrase for /etc/pki/tls/private/ftp.key: # 输入私钥密码123456
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:86
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:openlab
Organizational Unit Name (eg, section) []:RHCE
Common Name (eg, your name or your server's hostname) []:server
Email Address []:andy@qq.com
#vim到/etc/httpd/conf/httpd.conf进行配置也可以,因为有include导入
[root@server ~]# vim /etc/httpd/conf.d/ssl.conf
# 定位第一行,输入以下内容:
<virtualhost 192.168.80.129:443>
sslengine on
SSLCertificateFile /etc/pki/tls/certs/ftp.crt
SSLCertificateKeyFile /etc/pki/tls/private/ftp.key
servername 'ftp'
documentroot /www/ftp
alias /ftp /www/ftp # 设置别名访问二级目录
<directory /www/ftp>
allowoverride none
require all granted
</directory>
</virtualhost>
[root@server ~]# systemctl restart httpd
🔐 Enter TLS private key passphrase for ftp:443 (RSA) : ****** # 输入私钥的密码123456
# 虚拟机中打开火狐浏览器,输入www.openlab.com/file
# 虚拟机中打开火狐浏览器,输入https://www.openlab.com/ftp,点击高级->接受风险并继续