您的位置:首页 > 理论基础 > 计算机网络

https安全传输协议

2012-08-22 08:30 316 查看
一.https 简介

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。 也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二.https实现原理及流程

SSL协议的握手过程

为了便于更好的认识和理解SSL 协议,这里着重介绍SSL 协议的握手协议。SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:

①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

客户端服务器端发出信息,指明后面的数据通讯将使用的步骤

⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤

⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

三.安全的超文本传输协议的案例配置

案例一:账号验证的安全加密web网站的实现

1.安装并简单配置账户密码验证的web服务器

①.编辑yum安装客户端

[rhel-server]

name=Red Hat Enterprise Linux server

baseurl=file:///mnt/cdrom/Server

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

[rhel-vt]

name=Red Hat Enterprise Linux vt

baseurl=file:///mnt/cdrom/VT

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

[rhel-cluster]

name=Red Hat Enterprise Linux cluster

baseurl=file:///mnt/cdrom/Cluster

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

[rhel-clusterstorage]

name=Red Hat Enterprise Linux clusterstorage

baseurl=file:///mnt/cdrom/ClusterStorage

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

②.安装httpd 服务器

[root@donghao244 Server]# yum install httpd

③.在"/var/www/html/目录下"编辑".htaccess"文件

[root@donghao244 html]# vim .htaccess

authuserfile /var/www/.htpasswd

authtype basic

authname "please input your name and password!!!"

require valid-user

④.创建账号数据库

在“/var/www/”目录下使用

htpasswd -c .htpasswd user1 其后输入密码

htpasswd .htpasswd user2其后输入密码

htpasswd .htpasswd user3其后输入密码

2.创建CA服务器

①.在 /etc/pki/tls 目录下编辑openssl.cnf 文件。

vim openssl.cnf 修改如下:

45 dir = /etc/pki/CA

88 countryName = optional

89 stateOrProvinceName = optional

90 organizationName = optional

136 countryName_default =CN

//默认CA属于哪个国家

144 localityName_default = ZZ

//默认CA属于哪个城市

147 0.organizationName_default = ZZU

//默认组织的名称

②.在目录“/etc/pki/CA”下生成三个目录,两个文件

目录: Certs crl newcerts

文件: Index.txt serial

mkdir certs crl newcerts

touch index.txt serial

echo "01" >>serial //序列初始值

③.生成密钥及自签名证书(以"/etc/pki/CA"为默认目录)

Openssl genrsa 1024 >/etc/pki/CA/ private/cakey.pem

//生成密钥文件

ll private/cakey.pem

//查看密钥文件的属性

-rw------- 1 root root 887 Aug 4 15:53 private/cakey.pem

openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650

//创建自签名证书

openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CN]:

State or Province Name (full name) [Berkshire]:

Locality Name (eg, city) [ZZ]:

Organization Name (eg, company) [ZZU]:

Organizational Unit Name (eg, section) []:ETC

Common Name (eg, your name or your server's hostname) []:www.cj.com

Email Address []:

3.在服务器上生成证书

①.创建https加密相关目录及钥匙

[root@donghao244 ~]# mkdir -pv /etc/httpd/certs

mkdir: created directory `/etc/httpd/certs'

创建加密的主目录

cd /etc/httpd/certs/

[root@donghao244 certs]# openssl genrsa 1024 >httpd.key

②.生成证书请求

[root@donghao244 certs]# openssl req -new -key httpd.key -out httpd.csr

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CN]:CN

State or Province Name (full name) [Berkshire]:zz

Locality Name (eg, city) [ZZ]:ZZ

Organization Name (eg, company) [ZZU]:ZZU

Organizational Unit Name (eg, section) []:MKT

Common Name (eg, your name or your server's hostname) []:www.abc.com

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

③.生成证书文件

[root@donghao244 certs]# openssl ca -in httpd.csr -out httpd.cert

Using configuration from /etc/pki/tls/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Aug 4 08:10:16 2012 GMT

Not After : Aug 4 08:10:16 2013 GMT

Subject:

countryName = CN

stateOrProvinceName = zz

organizationName = ZZU

organizationalUnitName = MKT

commonName =www.abc.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier: 10:A8:89:9C:8B:DF:2D:EC:86:98:8D:29:C1:D5:7D:97:C0:E9:E2:D9

X509v3 Authority Key Identifier: keyid:B8:AE:D4:43:B1:17:47:2E:08:31:ED:DA:F7:E4:B0:95:F4:DD:56:A3

Certificate is to be certified until Aug 4 08:10:16 2013 GMT (365 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

签发证书!

4.将ssl与http整合起来的配置

①.安装mod_ssl

yum install mod_ssl

②.编辑 /etc/httpd/conf.d/ 目录下的 ssl.conf

112SSLCertificateFile /etc/httpd/certs/httpd.crt

//指明服务器证书

119SSLCertificateKeyFile/etc/httpd/certs/httpd.key

//指明服务器的密钥

128SSLCertificateChainFile/etc/pki/CA/cacert.pem

//指明CA服务器的证书的位置

5.启动并测试文本网站的特性

进行账号库验证





可以正常访问不加密的站点





初次访问加密的网站时,需要安装CA 认证服务器的证书





导入证书





使用ip地址访问会报错,访问的名称一站点的名字不一致





使用完整主机名即可以访问加密的站点





至此,安全加密的https 就可以提供服务了

嗯,韩宇说的对呀!!!
本文出自 “交流群“143420878”” 博客,请务必保留此出处http://donghao123.blog.51cto.com/4879169/969604
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: