httpd 实现ssl

https

mark

一、SSL会话的简化过程

1、第一次访问一个加密站点时,客户端发送可供选择的加密方式,并向服务器请求证书,服务器端并不会立即响应

2、服务器端发送证书以及选定的加密方式给客户端

​ (由于A站点的证书包含了由CA私钥签名后的公钥、CA 的信息、过期的时间,这一步,相当于客户端得到了A站点的公钥)

3、客户端取得证书并进行证书验证
如果信任给其发证书的CA

​ (a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
​ (b) 验证证书的内容的合法性:完整性验证
​ © 检查证书的有效期限
​ (d) 检查证书是否被吊销
​ (e) 证书中拥有者的名字,与访问的目标主机要一致

然后, 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器, 完成密钥交换

4、服务用此密钥加密用户请求的资源,响应给客户端

5、 下次通信,仍然使用

注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机

二、httpd 实现https的方法

过程:
2.1 为服务器申请数字证书
  • 创建私有CA

  • 在服务器创建证书签署请求

  • CA签证

2.2 配置httpd支持使用ssl,及使用的证书
	yum -y install mod_ssl  

配置文件:/etc/httpd/conf.d/ssl.conf

  • DocumentRoot

  • ServerName

  • SSLCertificateFile

  • SSLCertificateKeyFile

例子:
  1. 创建相关证书

    openssl genrsa 2048 > cakey.pem
    openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
    openssl req -newkey rsa:1024  -days 365 -nodes -keyout httpd.key > httpd.csr
    openssl x509 -req -in httpd.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > httpd.crt
    

    注意:httpd.csr 中最后 Common Name 中common name 一定要是准备加密访问的网站

    Common Name (eg, your name or your server’s hostname) [ ]:www.a.com

  2. 安装ssl 模块

    yum -y install mod_ssl
    
  3. 修改conf

    [root@node1 ~]# vim /etc/httpd/conf.d/ssl.conf
    

    ssl.conf 是来自与安装ssl 模块时生成的配置文件

    <VirtualHost _default_:443>
    DocumentRoot "/data/asite"
    <directory /data/asite>
    require all granted                                                                                                                         
    </directory>
    SSLCertificateFile /data/dd/httpd.crt
    SSLCertificateKeyFile /data/dd/httpd.key
    SSLCACertificateFile /data/dd/cacert.pem
    </VirtualHost>
    
发布了62 篇原创文章 · 获赞 7 · 访问量 1265

猜你喜欢

转载自blog.csdn.net/qq_36801585/article/details/104452338