apache+SSL 搭建https
简单介绍
一般情况下,我们打开网站默认的是使用明文传输方式,但在日常生活中,当我们在登录或者支付交易时,网站就会自动跳转至SSL(Secure Sockets Layes)加密传输模式,SSL的功能就是提供加密数据
网络传输过程中的数据加密则是全部委托给SSL协议来完成,而TLS(Transport Layes Security)是对SSL的扩展与优化,它可以提供数据的安全,同时也保证数据的完整性
证书(Certificate)是HTTPS的核心,但是其实证书并不是一个单一的东西,而是几种技术的综合
加密/解密
- 避免消息明文传输,对消息进行加密,早期一般是用对称加密算法,现在一般都是不对称加密,最常见的算法就是RSA
消息摘要
- 这个技术主要是为了避免消息被篡改,消息摘要是把一段信息,通过某种算法,得出一串字符串!这个字符串就是消息的摘要,如果消息被篡改"发生了变化",那么摘要也一定会发生变化"如果2个不同的消息生成的摘要是一样的,那么这就叫发生了碰撞"
数字签名
- 数字签名是为了验证双方的身份,避免身份伪造
单向认证和双向认证
- 单向认证:如百度、以及淘宝之内的网站
- 双向认证:如银行对安全要求很高的网站,也会采用双向认证,如U盾、安全控件什么的,其实就是固化的客户端证书
Apache Http Server通过mod_ssl模块来实现对SSL/TLS的支持,所以等下环境搭建的时候需要安装mod_ssl模块
SSL涉及到的内容非常繁杂,包括各种术语、命令、算法等,所涉及到的我都没有完全理解,此篇随便笔者将会把自己理解的都尽量解释一下,如果需要深究,需要花大量的时间来完成
https协议默认的端口号为443
创建CA(Certificate Authority)
CA也称为"根证书"
服务端做了一个证书,但是这是没有法律效力的,谁都可以自己做证书,就根本达不到安全的目的!所以就要有一个机构,负责来确认服务端的身份,然后统一的签发证书,这样才能有权威性
当用户用浏览器通过HTTPS协议访问一个网站,网站首先会发过来一个自己的证书(certificate),接下来浏览器就会到权威机构(CA),去验证一下这个证书是不是它签发的,如果是的话,就信任这个网站的证书,继续访问。如果不是的话,要怎么处理就依赖于实现了,一般的浏览器会弹出一个警告,让用户自己决定要不要继续访问,当然直接拒绝也是可以的
现在国际上有3大CA机构,如果是要自己做一个网站的话,如上所述,一般是需要请这些权威机构帮忙签发证书的!现在所有的主流浏览器,默认都安装了这些CA的根证书,所以如果网站的证书是这些权威机构签发的,浏览器就不会发出警告了。比如淘宝网证书是由GlobalSign签发的,所以访问淘宝网,浏览器不会发出警告
这里还有一个链条的关系,比如我有10个子网站,如果每个都要去找CA签发证书,就很麻烦,我可以找CA给我签发一个次级根证书,然后再用这个次级根证书给自己签发10个证书,那么只要客户的浏览器里有CA根证书就可以了,这10个证书都可以通过认证,不要求客户安装次级根证书
其实如果是企业应用,那完全可以自己给自己当CA,因为可以要求目标用户(操作系统)安装自己的CA根证书,效果是一样的,还可以省下请权威CA签发证书的费用(互联网应用分发自己的CA到无数的互联网用户上,难度非常大)
环境搭建
Linux一台6.4 IP(192.168.10.200)
测试用我们的windows
首先我们把装好的Linux系统配上IP地址!(不要配置错哦)
配置好了,不要忘记重新启动网络。然后在拼一下windows的IP地址!看看通不通!
之后我们安装httpd和openssl这个几个软件包。
这些我提前安装的,到后面还需要安装一个包。那个一会到了后面再讲
这些都安装好了之后我们启动Apache网站,看默认的是否起来
然后我配置Apache的SSL,那个Apache配置到此就结束了!
进入openssl的配置目录
查看文件
接下来创建CA私钥(先安装一个这个软件包
)
安装好之后进入到/etc/pki/tls/certs目录,我们在在里面生成私钥
成立私钥
接下来创建公钥
创建好之后,创建证书
这块内容改天解释,或者自己百度一下
这三样全部好了之后,我们在次查看这个目录下!是不是多了三个文件
把私钥移到/etc/pki/tls/private目录下
进入到/etc/pki/tls/private目录下,查看。给予权限
到此为止,SSL也创建好了!开始配置SSL配置文件
(/etc/httpd/conf.d/)这个目录下,如果下面没有这个配置文件,我们在安装一个软件包{yum install –y mod_ssl}安装好后再次查看,此时就有了。打开配置文件ssl.conf 还有SSL默认监听的端口是443
找到下面两行修改一下证书名称就好了。
最后我们关闭防火墙和selinux这两项!重启服务器
测试
此时服务器搭建完成了!点击继续浏览此网站(不推荐)。继续流浪此网页!。正常打开
总结:注意一些小的方面,私钥和公钥要分清!那个主要那个次要。
apache+SSL 搭建https的更多相关文章
- Django + Apache + 树莓派 搭建内网微信公众号服务器
其实早在微信开放公众号开发平台时就想弄一个自己的公众号服务器,奈何对web服务器搭建和开发一窍不通,只是注册了一下开发者帐号,并没有采取行动,万恶的拖延症. 前一年,开始接触python,打开了神奇世 ...
- win10系统iis下部署搭建https (ssl/tls)本地测试环境
有时想要把公司的某些XX项目部署成https站点,是为了在传输层加密传输,防止他人嗅探站点重要数据信息,平常我们使用的http方式都是明文方式传输的很不安全,容易被他人窃取.而有些时候要在本地搭建ht ...
- phpstudy 安装Apache SSL证书实现https连接
Windows phpstudy安装ssl证书教程. 工具/原料 phpstudy 集成环境 申请的SSL证书 方法/步骤 首先申请免费的ssl证书,很多地方都可以申请.我是在腾讯云!如图 ...
- Mac下配置Apache Httpd的Https/SSL
Mac下配置Apache Httpd的Https/SSL httpd版本: httpd-2.4.17 jdk版本: jdk1.8.0_65 参考来源: Mac下安装Apache Httpd Mac O ...
- 搭建https本地服务器:如何得到被所有客户端认可的ssl证书
https,作为http的加密版,作用还是很大的:能够提升网站搜索权重,让你的网站更安全,而且如果你的网站没有使用https的话,将无法作为移动设备原生应用的api接口.可见掌握为网站启用https的 ...
- Linux apache自建证书搭建https
前言 搭建https有两种方式,分为单向认证和双向认证.单向认证就是传输的数据加密过了,但是不会校验客户端的来源,也就只有客户端验证服务端证书. 单向认证 1.安装mod_ssl ...
- windows Apache 配置支持HTTPS的SSL证书
在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有ssl版本的Apache安装程序. 并且ssl需要的文件在如下的位置: [Apache安装目录]/m ...
- 使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)
V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...
- 如何申请https证书、搭建https网站
如何申请https证书.搭建https网站 随着国内搜索引擎巨头百度启用全站https加密服务,全国掀起了网站https加密浪潮.越来越多的站点希望通过部署https证书来解决“第三方”对用户隐私的嗅 ...
随机推荐
- C 基础 _Generic 泛型应用
引言 - _Generic 用法简介 #include <stdio.h> #define TYPENAME_CASE(type) \ type: #type, #define TYPEN ...
- 通过ssh-copy-id免密码连接Linux主机
Login Raspberry Pi without passcode via ssh-copy-id Generate public key $ ssh-keygen -t rsa Upload p ...
- 跳表的java实现,转载自网络,仅供自己学习使用
文档结构: 1.代码结构 2.代码实现 1.代码结构 节点类: String key 键值 对跳跃表的操作都是根据键值进行的 Int value 实际值 Node up,down,left,rig ...
- pytest-pytest-html生成HTML测试报告
pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 pytest-html 1.github上源码地址[https://github.com ...
- django Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes
django连接数据库配置设置如下 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test2', ...
- wso2 linux上部署说明
1.启动wso2
- JFinal Enjoy指令扩展管理常用文本模板
个人博客 地址:http://www.wenhaofan.com/article/20190304102258 平时在项目中使用短信模板 邮件模板以及 站内消息通知等文本模板一般都是通过手动的字符串拼 ...
- 使用VS2017创建EF框架实例
本文例子中使用环境:vs2017,sql server 2008 一,创建EF项目 1,解决方案添加.Net Framework类库项目,在新建的项目下新建项:data->ADO.NET实体数据 ...
- 纯css实现移动端横向滑动列表(可应用于ionic3移动app开发)
前几天在公司做开发的时候碰到一个列表横向滑动的功能,当时用了iscroll做,结果导致手指触到列表的范围内竖向滑动屏幕滑动不了的问题. 这个问题不知道iscroll本身能不能解决,当时选择了换一种方式 ...
- 创建spring boot 项目
1.新建Spring Starter Project(需要连接外网) 2.选择web 3.点击完成,生成maven项目 pom文件默认有一些依赖,但是有一个地方报错,<parent>节点报 ...








)







