正文

利用https实现站点访问2012-11-24 11:37:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/53904.html

分享到:

一、https的简介 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议。它是由 Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。 https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 HTTPS和HTTP的区别 1、https协议需要到ca申请证书,一般免费证书很少,需要交费。 2、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 二、SSL的简介 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 SSL的认证过程 1、客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接; 2、服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息 3、客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; 4、服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。示意图如下: 三、实验步骤 安装httpd软件包 [root@localhost Server]#rpm -ivh httpd-2.2.3-31.el5.i386.rpm 在站点目录创建一个小的测试页面 [root@localhost html]# echo "I am glad to see you! " >index.html 配置颁发证书的根机构 vim /etc/pki/tls/openssl.cnf 45 dir             = /etc/pki/CA          # 证书所在的位置 46 certs           = $dir/certs            # 已经发行证书存放的位置 47 crl_dir         = $dir/crl              # 证书吊销列表存放的位置 48 database        = $dir/index.txt       # 数据库索引文件存放的位置 51 new_certs_dir   = $dir/newcerts         # 新发行的证书的位置 53 certificate     = $dir/cacert.pem         # 发证机关的证书的位置 54 serial          = $dir/serial           # 第一份证书序列号 58 private_key     = $dir/private/cakey.pem  # 产生私钥的位置       根证书的国家,省份的信息不需要与申请证书的机构匹配,改为可选择的设置 89 countryName            = optional  #match改为optional 90 stateOrProvinceName     = optional 91 organizationName        = optional 修改颁发机构的默认信息 135 [ req_distinguished_name ] 136 countryName                     = Country Name (2 letter code) 137 countryName_default             = CN    #默认国家是中国 141 stateOrProvinceName             = State or Province Name (full name) 142 stateOrProvinceName_default     = HENAN   #默认省份河南 144 localityName                    = Locality Name (eg, city) 145 localityName_default            = ZHENGZHOU  #默认城市郑州 在CA目录下创建三个目录两个文件 [root@localhost CA]# mkdir crl certs newcerts [root@localhost CA]# touch index.txt  serial 颁发的证书的序列号码从01开始 [root@localhost CA]# echo "01" >serial 为证书颁发机构产生钥匙,并重定向到private目录下的cakey.pem文件中,钥匙长度为1024位 [root@localhost CA]# openssl genrsa 1024 >private/cakey.pem 修改文件权限,确保钥匙的安全,其他用户没有权限 [root@localhost CA]# chmod 600 private/* 产生密钥       #–new表示新的钥匙 –x509表示一种格式 [root@localhost CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650 Country Name (2 letter code) [CN]: State or Province Name (full name) [HENAN]:     Locality Name (eg, city) [ZHENGZHOU]: Organization Name (eg, company) [My Company Ltd]:SECCENTER Organizational Unit Name (eg, section) []:TEC Common Name (eg, your name or your server's hostname) []:rootca.net.net                                     #根机构的全称 Email Address []: Web服务器的配置 创建存放私有钥匙,证书等信息的目录 mkdir -pv /etc/httpd/certs 产生钥匙 cd /etc/httpd/certs/ openssl genrsa 1024 >httpd.key 向根机构请求证书, [root@localhost certs]# openssl req -new -key httpd.key -out httpd.csr Country Name (2 letter code) [CN]: State or Province Name (full name) [HENAN]: Locality Name (eg, city) [ZHENGZHOU]: Organization Name (eg, company) [My Company Ltd]:zzyy Organizational Unit Name (eg, section) []:tec Common Name (eg, your name or your server's hostname) []:www.zzyy.com Email Address []: 利用请求,得到证书 [root@localhost certs]# openssl ca -in httpd.csr -out httpd.cert Web服务器申请证书信息 Subject:             countryName               = CN             stateOrProvinceName       = HENAN             organizationName          = zzyy             organizationalUnitName    = tec             commonName                = www.zzyy.com 修改钥匙证书所在目录的权限,保证信息的安全 [root@localhost certs]# chmod 600 * 安装加密通讯的软件包 yum -y install mod_ssl-2.2.3-31.el5.i386.rpm cd /etc/httpd/conf.d/ vim ssl.conf Web服务器出示证书的位置 112行 SSLCertificateFile /etc/httpd/certs/httpd.cert 出示私钥的位置 119行 SSLCertificateKeyFile /etc/httpd/certs/httpd.key 证书路径 128行SSLCertificateChainFile /etc/pki/CA/cacert.pem 查看开启的http相关的端口 [root@localhost conf.d]# netstat -tupln |grep http tcp        0      0 :::80                       :::*                        LISTEN      2354/httpd          tcp        0      0 :::443                      :::*                        LISTEN      2354/httpd  启动web服务器的httpd服务 service httpd start 四、客户端测试 1.      非加密的http访问 2.加密的https访问方式 查看证书内容 信任并安装根机构的证书,然后https访问 为了只支持密文访问站点,关闭明文访问使用端口80 vim /etc/httpd/conf/httpd.conf #Listen 80                 #注释80端口 重启服务 service httpd restart 明文方式无法访问 密文方式依然可以访问web服务器

阅读(3661) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册