SSL(Secure Sockets Layer)安全协议又叫“安全套接层协议”。它是在网络传输层之上提供的一种基于RSA和对称加密算法的,用于浏览器和Web服务器之间的安全连接技术,用来提供两个应用之间通信的保密,可信和身份认证。它被视为 Internet 上 Web 浏览器和服务器的标准安全性措施。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是以安全为目标的http通道,即在http传输协议中加入ssl层,由于https的安全访问是基于ssl,因此要实现安全访问,要配置的就是让ssl如何工作。 https是由网景公司开发,现在它被广泛用于万维网上安全领域的通讯,例如网络银行等方面。 http是基于的tcp的80 端口,而https是基于tcp的443端口。
安装mod_ssl 模块,建议使用yum来安装,因为安装此模块时会有一些依赖关系。
yum install mod_ssl
distcache-1.4.5-14.1.i386.rpm
要给客户端签发证书,首要前提服务器CA要有自签证书。因此首先来做的就是创建自签证书。
切换到/etc/pki/CA目录下,执行openssl –genrsa 1024 > private/cakey.pem
在图中可以看到创建的过程,完成后,到private目录下查看是否创建成功。也可以使用openssl –in cakey
openssl req –new –x509 –key private/cakey.pem –out cacert.pem –days 3695
来生成一个待签名的 CA根证书,用来给其他申请者进行颁发证书。
在生成自签证书时,要填写证书信息以确保CA的真实性。红线框起来的是要填写的内容,在试验的时候可以有自己决定。
为了CA的证书安全性,建议将cakey.pem密钥文件的权限修改为600
接下来是编辑/etc/pki/tls/openssl.cnf 将里面的路径改为真实路径。
建立文件index.txt和serial 目的是存放颁发证书的信息。完成后,查看是否创建成功。
好了,CA的自签证书已经创建成功,接下来的CA任务就是给客户端的颁发证书了。但是在颁发证书之前,客户端要自己生成一对密钥文件,并向CA提出申请证书的请求。因此,下面要做的就是生成客户端的密钥,并且向CA提出申请了。具体步骤如下:
执行命令:openssl –genrsa 1024 > http.key 来生成一对http协议的密钥文件。
密钥生成了,下一步就是向CA提出申请证书的请求了。具体命令如下:
openssl req –new –key httpd.key –out httpd.csr
红线框起来的为示例。在信息题写完后,提示要输入密码,这个密码是用于保证证书安全性的密码,在查询修改密钥文件是会用到。这里就不再设定了。
现在回到服务器端。客户端的申请证书的请求已经到达CA处,那么CA该如何来给客户端签发证书呢?执行命令:
openssl ca –in httpd.csr –out httpd .crt –days 3655
有点错误了,该如何来解决呢?先看看出现错误的原因。错误提示是说在/etc/pki/CA/目录下,没有newcerts文件,此时,可以看到,newcerts目录是用来存放CA签发证书信息的,再联想到前面生成CA自签证书后创建的index.txt文件和serial文件,因此可以总结出:
CA在颁发证书时要用到三个文件: newcerts、index.txt和serial
如果在前面不创建index.txt文件和serial文件,在此处也会出现找不到index.txt文件和serial文件的。
错误既然找到了,那么就去/etc/pki/CA目录下创建newserts目录就行了。
接下来就是一些交互过程,询问是否确认给客户端颁发证书。当然要颁发了,输入y就行了(如果不想颁发,也可以输入n)。
可以使用openssl x509 -in httpd.crt -noout -text查看生成的证书的信息
也可以使用下面的命令查看证书持有人的标识信息
openssl x509 -in httpd.cst -noout -subject
证书生成了,可是以前用的http协议不知道已经生成证书了。因为在默认情况下http协议是关闭支持ssl安全访问的。因此,下面要做的就是让http协议记住以后访问服务器要用https协议。具体操作如下:
切换到/etc/httpd/conf.d/目录下,编辑ssl.conf文件
找到SSLCertificateFile 和SSLCertificateKeyFile这两行,没有修改之前是这样的
把这两行修改为:SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
到此为止,所有的配置工作已经完成,嗯,是该验证一下的时候了!
在另外一台机器上,打开浏览器,输入IP地址,为了验证试验效果,先以http协议来访问服务器,在之前,服务器端已写好测试网页。
再来用https协议访问一下服务器,看看会出现什么效果呢?
选择“是”进入下一步。也可以先选择“查看证书”来查看一下证书信息来验证一下刚才的配置。
OK,通过https协议也可以访问到服务器端的测试页,那么与http访问的呢?留意下图中右下角的锁标志,这就代表访问协议是基于加密的安全访问。在实际生活中,访问一些支付网站会见到这样的标志。