https原理:



步骤:
1、客户端浏览器向服务器发送如下信息:
(1)客户端支持的SSL/TLS协议的版本号
(2)密钥算法套件
(3)客户端产生的随机数,用于稍后生成“会话密钥”
2、服务器向客户端发送如下信息:
(1)确认使用的加密通信协议版本,如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
(2)确认使用的加密方法
(3)服务器证书
(4)服务器生成的随机数,用于稍后生成“会话密钥”
3、客户端利用服务器发来的信息验证服务器的合法性。如果合法性验证没有通过,通讯将断开,如果合法性通过,则可以知道认证服务器的公钥是真实有效的数字证书认证机构,并且服务器发来的公钥是值得信赖的。(加密数字证书的公钥传送给客户端,客户端用私钥解密,将数字证书解开,可以看到该服务器是可信赖的和服务器发来的公钥)
4、客户端随机产生一个用于后面会话连接的对称密钥,然后用服务器的公钥加密,将加密后的对称密钥发送给服务器。

工作流程可分为三个阶段:
(1)认证服务器
浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程,否则,浏览器将提示用户,根据选择是否继续。也可管理受信任的CA机构列表,向其中添加我们想要信任的CA机构。
(2)协商会话密钥
客户端在认证完服务器后,通过服务器的公钥与服务器进行加密通信,协商出两个对称的会话密钥,分别用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。(还要协商对称会话密钥,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源,另外,会话密钥是随机生成,每次协商都会有不一样的结果,安全性更高)
(3)数据加密通信
此时客户端服务器都有了本次通信的会话密钥,之后传输的所有http数据,都通过会话密钥加密。从而保证了数据的私密性和完整性。

##其中非对称加密算法用于握手过程中加密生成的密码,对称加密算法用于对真正的传输数据进行加密,hash算法用于验证数据的完整性

非对称加密算法:RSA、DSA/DSS
对称加密算法:AES、3DES、RC4
hash算法:MD5、SHA1、SHA256

配置:
X.509通用的证书格式包含三个文件:
key:私钥文件
csr:证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt:是CA机构签名后的证书,包含证书中的信息。

例:配置安全web服务站点http://www.openlab.com配置SSL加密,
要求:生成自签名证书文件为openlab.crt,私钥文件为openlab.key

第一步:安装SSL
#yum install mod_ssl -y
#rpm -qa mod_ssl
第二步:创建访问文件目录及其内容
#mkdir /www/openlab
#echo this is openlab > /www/openlab/index.html
第三步:编辑配置文件
#vim /etc/httpd/conf.d/vhost.conf
通过#sp命令打开/etc/httpd/conf.d/ssl.conf来复制粘贴五行SSL开头的内容,此处图片内容的.crt和.key路径已修改

第四步:注册证书
#cd /ect/pki/tls/certs
#make openlab.crt

第五步:修改/etc/httpd/conf.d/vhost.conf中的.crt和.key
路径

第六步:在/etc/hosts下输入ip绑定的域名

第七步:重启http服务
#systemctl restart httpd
第八步:浏览器测试


http://www.dtmao.cc/news_show_1307991.shtml

Linux上搭建https服务器的更多相关文章

  1. CentOS Linux上搭建PPPoE服务器及拨号设置

    CentOS Linux上搭建PPPoE服务器及拨号设置 搭建PPPoE,成功了的话,就觉得超级简单,在CentOS Linux更是5步左右就能搞定. 1.安装pppoe,安装完成后,会有pppoe- ...

  2. linux上搭建图片服务器

    之前写过一个搭建图片服务器的随笔:https://www.cnblogs.com/xujingyang/p/7163290.html   ,现在回头看看,我去,感觉写的好乱,现在再整一个吧.o(╯□╰ ...

  3. linux上搭建ftp服务器

    摘要 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行 ...

  4. 在linux上搭建SVN服务器并自动更新至WEB目录

    1.仓库放在 /var/svn/ 目录下,并且仓库名为 project 2.创建用户组user,该组下添加两个成员user1.user2,密码直接用用户名,两用户可以checkout代码和提交代码 3 ...

  5. Linux上搭建Elasticsearch服务器并同步数据库

    1.准备工作         下载Elasticsearch版本号2.3.4 https://www.elastic.co/downloads/past-releases/elasticsearch- ...

  6. linux上搭建svn服务器

    1.检查当前版本,没有的话用yum安装rpm -qa subversion 2.安装yum install subversion -y 2.建库mkdir -p /home/svn/projectsv ...

  7. Linux上部署web服务器并发布web项目-转

    Linux上部署web服务器并发布web项目   近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...

  8. Linux上部署web服务器并发布web项目

    近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一 ...

  9. windows 上搭建 sftp 服务器 -freesshd全过程( 在linux上部署逐浪CMS的必读教程)

    文章标题: windows 上搭建 sftp 服务器 - freesshd全过程 关键字 : freesshd 文章分类: 教程 创建时间: 2020年3月23日 缘由 动手 第一步:添加用户 第二步 ...

随机推荐

  1. linux IP 注释

    DEVICE=name,这里name是物理设备的名字(动态分配的PPP设备应当除外,它的名字是"逻辑名". IPADDR=addr, 这里addr是IP地址. NETMASK=ma ...

  2. .net core 中使用Log4net输出日志到Mysql数据库中

    .net core 中使用Log4net输出日志到数据库中去 1.使用Nuget安装log4net 和 mysql.data 2.设置log4net 的配置文件 log4net.config 可以设置 ...

  3. Azure 存储简介

    Azure Storage Account(存储账户)包含所有Azure Storage的数据对象,包括Blob.Data Lake Gen2,File.Queue.Disk和Table等服务,该St ...

  4. APPIUM-Android自动化元素定位方式

    一.常用元素定位方法 appium从selenium中继承了所有的元素定位方法, 并且增加了一些自己的元素定位方式,下方截图分别为selenium和MobileBy包源码: 但是从继承selenium ...

  5. (十四)json、pickle与shelve模块

    任何语言,都有自己的数据类型,那么不同的语言怎么找到一个通用的标准? 比如,后端用Python写的,前端是js,那么后端如果传一个dic字典给前端,前端肯定不认. 所以就有了序列化这个概念. 什么是序 ...

  6. 【Linux】reverse mapping checking getaddrinfo for XXX.XXXX.com failed - POSSIBLE BREAKIN ATTEMPT!

    ------------------------------------------------------------------------------------------------- | ...

  7. 使用ogg实现oracle到postgresql表的实时同步

    参考:https://docs.oracle.com/goldengate/c1221/gg-winux/index.html https://blog.51cto.com/hbxztc/188071 ...

  8. Java基础复习3

    循环的嵌套 public class demo8 {     public static void main(String[] args) {         /*  输出########       ...

  9. Ubuntu 能ping通DNS 地址 无法解析域名

    ping通qq百度都行,唯独谷歌不行, 主机能够ping通google的dns服务器地址 8.8.8.8,却无法解析域名   $ ping www.google.co.uk ping: unknown ...

  10. 解决PHP无法监听9000端口问题/502错误解决办法

    问题背景 配置nginx+php服务的时候,发现网站能打开html,打开php文件就显示502,一般这个是php没启动啊啥的导致不能正常解析php文件. 原因分析 因为nginx解析php文件是交给f ...