你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

搭建加密web服务 https httpd+mod_ssl

2021/12/23 4:52:34

搭建加密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) : ******   

面试:

我们一般申请证书的时候会输入哪些基本信息