搭建加密web服务 https httpd+mod_ssl
安装
要想实现加密认证,这个安全模块叫做mod_ssl
yum install mod_ssl -y
安装完成在子配置模块下生成一个ssl.conf文件

去查看该文件中的配置项
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 指定我们的证书文件(内部响应传输)
pki公钥基础设施
tls 认证协议
certs 证书
.crt 自签名证书文件
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 私钥文件路径
公钥通过证书发给客户端主机,私钥必须在我们的服务端主机
修改配置
###B公司的网站信息
<VirtualHost 192.168.17.200:80>
ServerName 192.168.17.200 ip
DocumentRoot /200 根目录
SSLEngine on SSL引擎开启
SSLCertificateFile /etc/pki/tls/certs/openlab.crt 自签名证书
SSLCertificateKeyFile /etc/pki/tls/private/openlab.key 秘钥
</VirtualHost>
<Directory /200> 目录权限
AllowOverride none
Require all granted
</Directory>
<VirtualHost 192.168.17.200:80>
ServerName www.haha.com 域名解析
DocumentRoot /200/haha
</VirtualHost>
SSLCertificateFile 必须指明证书的路径,才能将证书发送出去(如果是.crt,标记的是自签名证书文件)
SSLCertificateKeyFile 我们把证书发出去之后,让它做一个公钥和私钥的验证,所以我们也必须指明服务器上私钥路径(如果是.key,标记的是私钥文件)
x.509通用的证书格式包含三个文件:key , csr , crt。
key是私钥文件。
csr是证书签名请求文件,用于提交给证书颁发机构( CA)对证书签名。
crt是由证书颁发机构(CA )签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息。
---------------------------------------------------------------------RHEL7-------------------------------------------------------------------
(第一种)[root@localhost certs]# make jiami.crt
第一方法生成证书(不需要密码验证)
------------------8版本之后--------------------------! ! ! ! !!!注意!!! ! ! ! ! !! !! ! ! ! !--------------------------------------------------
(第二种) #openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/pki/tls/private/iktalab.key -x509 -days 365 -out /etc/pki/tls/certs/iktalab.crt
解析:openssl 证书生成命令 req请求 通过 -newkey 要去生成一个秘钥,用到的秘钥算法是非对称秘钥RSA算法,通过该秘钥所生成的加密长度2048或4096,通过 -nodes 去标记证书文件的编码格式用的是sha256,通过 -keyout 指定我们生成的秘钥文件/etc/pki/tls/private/iktalab.key,通过 -x509 指定我们的证书格式,用的-x509标准格式,指定证书有效期限365,-out 去输出我们的证书文件/etc/pki/tls/certs/iktalab.crt
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/pki/tls/private/iktalab.key -x509 -days 365 -out /etc/pki/tls/certs/iktalab.crt
#根据我们的要求通过RSA算法去生成私钥并且生成私钥之后要将我们的公钥注册在证书当中
Generating a RSA private key
..........++++
.......................................................................................................................++++
writing new private key to '/etc/pki/tls/private/iktalab.key'
-----
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) []:shannxi 省份
Locality Name (eg, city) [Default City]:xi'an 城市
Organization Name (eg, company) [Default Company Ltd]:iktalab 公司名/组织名
Organizational Unit Name (eg, section) []:ce 部门/组织单元
Common Name (eg, your name or your server's hostname) []:localhost 你的名字/服务器的名字
Email Address []:admin@ikta.com 邮件地址
重启服务(测试)
systemctl restart httpd
浏览器输入 https://192.168.17.200/

高级选项接受风险可访问
第二方法生成证书(需要密码验证)
--------------------------------------------------------------------x509 key csr crt------------------------------------------------------
[root@ikta certs]# openssl genrsa -aes128 2048 > /etc/pki/tls/private/iktalab.key
(第三种)#openssl req -utf8 -new -key /etc/pki/tls/private/iktalab.key -x509 -days 365 -out /etc/pki/tls/certs/iktalab.crt
我们来试着做一下另外一种方法
首先删除刚刚配的公钥私钥
rm -rf /etc/pki/tls/private/iktalab.key
rm -rf /etc/pki/tls/certs/iktalab.key
同样的方法去
[root@ikta certs]# openssl genrsa -aes128 2048 > /etc/pki/tls/private/iktalab.key
Generating RSA private key, 2048 bit long modulus (2 primes)
...............................................+++++
......+++++
e is 65537 (0x010001)
Enter pass phrase: 对私钥做一个密码验证
Verifying - Enter pass phrase: 私钥密码验证(后期去加载私钥需要密码验证)
现在有了私钥,通过私钥去导出公钥文件
[root@ikta certs]# openssl req -utf8 -new -key /etc/pki/tls/private/iktalab.key -x509 \
-days 365 -out /etc/pki/tls/certs/iktalab.crt
Enter pass phrase for /etc/pki/tls/private/iktalab.key: 加载私钥需要的密码
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) []:shannxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:iktalab
Organizational Unit Name (eg, section) []:ce
Common Name (eg, your name or your server's hostname) []:localhost
Email Address []:admin@iktalab.com
[root@ikta certs]# systemctl restart httpd
启动服务启动到一个加密的虚拟主机,要想实现加密认证,必须加载当前主机的私钥文件才行
所以启动服务之前必须要输入密码才可以
Enter TLS private key passphrase for 192.168.17.200:443 (RSA) : ******
面试:
我们一般申请证书的时候会输入哪些基本信息
