zoukankan      html  css  js  c++  java
  • Web服务之五:基于openssl定义https服务器的配置

    https会话建立的过程

       http与https都是基于TCP协议的,所以得先三次握手,确保对方的主机在线。三次握手成功之后,客户端和服务器端就可以建立SSL会话了。而建立SSL会话首先应该协商单向加密算法、对称算法、公钥加密算法,并选择双方都支持的算法,选择完成之后,Server发送自己的证书给客户端。客户端对证书验证完成之后如果发现没有问题,客户端会生成一个对称密钥(可能是随机的)并将其使用Server的公钥加密发送给服务器端,而Server将Client发送的对称密钥使用自己的私钥解密,接下来就可以使用对称密钥加密Client请求的内容并传送给客户端了,所以SSL会话就建立了。

      在三次握手建立完成之后进行协商SSL,这个SSL的建立与主机名无关,因为两台主机之间的通信靠的是IP和端口,因此两台主机通信没办法基于主机名作区分。这就意味着,若服务器只有一个IP地址,即若当前主机实现了基于域名的虚拟主机,那么它只能为一个虚拟主机提供SSL功能,即SSL会话仅能基于IP地址进行

    https的实现

    • 安装SSL模块

      要想让Web服务器能够支持SSL的功能,第一步得安装SSL模块

      查看模块:

      可发现没有SSL模块,因此需要安装:

      生成的/etc/httpd/conf.d/ssl.conf会作为主配置文件的一部分,因此需要重启才能生效。

      一般来讲,SSL新增了端口,而只要涉及到新端口(套接字)的话,必须得重启或重新装载才能生效。

      /var/cache/mod_ssl:SSL会话的缓存数据

    • 提供CA

      首先CA自签证书,然后服务器生成一段密钥,把公钥发送给CA服务器,让CA实现签名。

      生成自签证书:

        生成私钥:

        修改默认配置:

          certs:生成的证书放置的目录;
          crl:证书吊销列表放置的目录

          new_certs_dir:新签的证书;

          index.txt:记录签署的证书及证书名称等索引信息;

          serial:序列号;

          之所以在/etc/pki/CA目录下,是因为生成的证书默认在此目录下,为了不修改目录,而且名称就叫cacert.pem,因此使用此目录。

          cacert.pem

          cakey.pem:私钥,在private目录下;

        生成自签证书

        创建文件:

    • Web Server服务器端,生成一对密钥,将公钥保证成证书签署请求发送给CA服务器

        注意:信息需要与CA保持一致,但hostname为需要使用证书的那一个虚拟主机的主机名。

    • CA服务器签署证书

    • 将Web Server服务器的证书复制至Web服务器

        删除CA服务器的server服务器的证书颁发请求,避免被窃取:

    • 配置Web服务器使用此证书

      备份配置文件:

      配置文件内容:

        <VirtualHost _default_:443>:监听在443端口的虚拟主机;若有多个IP地址,这个虚拟主机应该监听在某一特定地址上;

      修改如下:

        DocumentRoot:需要与对应的虚拟主机的DocumentRoot保持一致;

        SSLEngine:是否启用SSL功能,需要为on;

        SSLProtocol:支持的SSL协议,all -SSLv2表示不使用SSLv2,那就只有SSLv3或TLSv1了。    

        SSLCipherSuite:加密机制,加密套件,ALL所有的但不包括ADH,不使用SSLv2

        SSLCertificateFile:证书文件的位置;

        SSLCertificateKeyFile:私钥文件的位置;

    • Windows客户端测试

        出现上述提示是因为对于颁发这个证书的机构,我们客户端未表示信任

      因此需要将证书发送给Windows客户端(使用ftp传输工具即可),并命名为*.crt,双击安装即可。

        在浏览器中查看证书:

      需要再次强调的是,请求的URL名称(即主机名称)一定要与证书服务器的名称保持一致。此外,一个地址上只能建立一个虚拟主机。

  • 相关阅读:
    深度学习框架caffe在macOS Heigh Sierra上安装过程实录
    关于MacOS升级10.13系统eclipse菜单灰色无法使用解决方案
    Struts2中的OGNL详解
    JAR包介绍大全用途作用详解JAVA
    使用SQLQuery 在Hibernate中使用sql语句
    Spring整合Struts的两种方式介绍
    springMVC使用@ResponseBody返回json
    springMVC controller配置方式总结
    安装GitLab出现ruby_block[supervise_redis_sleep] action run
    Mac系统下源码编译安装MySQL 5.7.17
  • 原文地址:https://www.cnblogs.com/long-cnblogs/p/10582157.html
Copyright © 2011-2022 走看看