HTTPS简介:
HTTPS是网景公司与1994年创建的,那时候HTTPS是和SSL一起使用的,但是后来SSL逐渐演变到TLS,最新的HTTPS在2000年五月份公布。想要更深层测了解的朋友可以去看看RFC2818文档。HTTPS用于对数据的加密和解密,并返回网络上传送回的结果。使用443端口,并支持使用X.509数字认证。
因此它的主要作用可以分为两种:一种是建立一个信息安全通道,保证数据传输的安全;另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询。
关于那些原理性的知识大家没事儿可以多去问问度娘,它肯定比我知道的多啦。下面上实验
环境:CentOS-6.5-i386
一、CA端配置
在CentOS系统下用openssl来模拟CA。安装openssl
yum --disablerepo=\* --enablerepo=c6-media install openssl-devel
安装后切换到/etc/pki/CA目录下
touch index.txt #创建一个内容为空名为index.tet的文件
touch serial
echo "01" >serial #追加一个初始值
openssl genrsa 1024 >private/cakey.pem #产生CA的RSA私钥 并追加到/private/cakey.pem中
chmod 600 private/cakey.pem #修改权限
openssl req -new -key private/cakey.pem -x509 - out cacert.pem #产生证书
这时候会询问你一些相关信息,比如国家、省份了、公司了、部门了什么的,如果你不想一点一点输入,也可以修改部分信息的默认值。编辑/etc/pki/tls/openssl.conf文件,修改默认值。
修改CA的策略匹配。由于默认的是匹配不上的不给予发放,得修改为不做匹配也就是匹配所有。这样当有客户端发来请求的时候才会发放成功。
填写完这些相关信息后证书文件就创建好了。
二、WEB端配置:
web服务器需要向CA提交带有公钥的文件才能获得证书。但是公钥从哪里来呢?得从私钥里面提取,所以先创建私钥。
mkdir -pv /etc/httpd/certs #创建一个放置私钥的目录
cd /certs #进入目录
openssl genrsa 1024 >httpd.key #产生私钥
chmod 600 httpd.key #修改权限
openssl req -new -key httpd.key -out httpd.crq#创建请求文件
openssl ca -in httpd.crq -out httpd.cert #证书签发
这一步完成之后你也可以看看之前touch的那个index.txt文件 当时创建的是空文件 现在你再看,它却成了一个有"内涵"的文件啦。
三、web与证书绑定
此时需要安装Apache所调用的模块,先查看系统中有没有安装,没有安装的话需要安装。
yum --disablerepo=\* --enablerepo=c6-media install mod_ssl
找到安装路径
编辑/etc/httpd/conf.d/ssl.conf 让web服务器调用刚刚安装的模块。
确认第十二行是打开的,因为它要调用模块的啊。
随手把下面这些需要用到的路径指定正确。
OK,重启httpd,查看端口的时候会出现两个端口,一个是http的80端口 一个是https的加密端口。当然,你也可以将80端口禁掉,这样访问的时候就只能使用加密的443端口了。
四、测试
测试的时候呢会遇到各种五花八的问题,最好用一个版本比较低的浏览器,这样效果比较明显。在浏览器地址栏中输入服务器的地址,看看会出现什么结果?这个界面是不是就蹦出来啦?好好看那两个×××的感叹号警示,那是什么原因造成的呀?该怎么做才能解决呢?
当你查看本地证书库的时候你会发现没有这个证书,也就是说客户端不相信CA,这个怎么做呢?其实很简单的,把证书一安就行了。
安装后再来查看本机的证书库,就有了吧。
此时访问站点,就剩这一个需要解决的问题了。这个是由于我们访问的是一个IP地址,但人家提供的是一个域名,做一个DNS服务器不就解决了。不过在这样一个小环境中搭建一个DNS服务器就显得小题大做了,你也可以直接点击"是"跳过,也能访问,不过每次访问都是面临这个问题。因此我还是想教大家一个简单的方法,修改hosts文件。修改完成后再访问看看,见证奇迹的时刻吧!